Ibanez1408
Ibanez1408

Reputation: 5058

How to convert strings to JSON

I get data from my source in this format:

tag_id=0x770000001103AE6FF40DDF9D, tid=0xE2003412013DC2FFEE1223ED160E0142100548BBFF80DC60, user_data=0x12A7B70991000000006E5C05D37F0000, first=2018-12-03T22:52:16.218, antenna=1, rssi=-471, tid_authentic=AUTHENTIC, pw_authentic=AUTHENTIC

this is how I get the result:

private static void EventReceiveHandler(object sender, EventInfo eventInfo)
        {
            switch (eventInfo.Type)
            {
                case EventInfo.EventTypes.STATUS_TX_ACTIVE:
                    //StatusChanged(eventInfo.Data);
                    //AddMessageToTxt("STATUS REPORT " + eventInfo.Data);                    
                    break;
                case EventInfo.EventTypes.TAG_REPORT:
                    AddMessageToTxt(string.Format("Time: {0} ~ STATUS REPORT: {1}", DateTime.Now, eventInfo.Data)); // "STATUS REPORT " + eventInfo.Data);
                    break;
                case EventInfo.EventTypes.TAG_ARRIVE:
                    AddMessageToTxt("Tag Arrives " + eventInfo.Data);
                    break;
                case EventInfo.EventTypes.TAG_DEPART:
                    AddMessageToTxt("Tag Depart " + eventInfo.Data);
                    break;
                case EventInfo.EventTypes.TAG_RAW_ARRIVE:
                    AddMessageToTxt("Tag Raw Arrive " + eventInfo.Data);
                    break;
                default:
                    AddMessageToTxt("NOTHING ELSE");
                    break;
            }
        }

How do I convert it to a json format so it would look like this:

{
    "tag_id":"0x770000001103AE6FF40DDF9D",
    "tid":"0xE2003412013DC2FFEE1223ED160E0142100548BBFF80DC60",
    "user_data":"0x12A7B70991000000006E5C05D37F0000",
    "first":"2018-12-03T22:52:16.21",
    "antenna":"1",
    "rssi":"471",
    "tid_authentic":"AUTHENTIC",
    "pw_authentic":"AUTHENTIC"
}

Thank you.

Upvotes: 2

Views: 107

Answers (3)

user9423406
user9423406

Reputation:

Use Newtonsoft.Json library for sonConvert.SerializeObject()

Upvotes: 0

Petr Bogoyavlenskiy
Petr Bogoyavlenskiy

Reputation: 86

var dictionary = new Dictionary<string, string>();
var parts = "tag_id=0x770000001103AE6FF40DDF9D, tid=0xE2003412013DC2FFEE1223ED160E0142100548BBFF80DC60, user_data=0x12A7B70991000000006E5C05D37F0000, first=2018-12-03T22:52:16.218, antenna=1, rssi=-471, tid_authentic=AUTHENTIC, pw_authentic=AUTHENTIC".Split(',');
var keyValues = parts
    .Select(q => q.Split('='))
    .Where(q => q.Length == 2)
    .ToList();
keyValues.ForEach(q => dictionary[q[0].Trim()] = q[1].Trim());
var json = JsonConvert.SerializeObject(dictionary);
//json == 
//{
//    "tag_id":"0x770000001103AE6FF40DDF9D",
//    "tid":"0xE2003412013DC2FFEE1223ED160E0142100548BBFF80DC60",
//    "user_data":"0x12A7B70991000000006E5C05D37F0000",
//    "first":"2018-12-03T22:52:16.218",
//    "antenna":"1",
//    "rssi":"-471",
//    "tid_authentic":"AUTHENTIC",
//    "pw_authentic":"AUTHENTIC"
//}

JsonConvert is from Newtonsoft.Json library.

Upvotes: 4

Klaus G&#252;tter
Klaus G&#252;tter

Reputation: 11977

So you have to first dissect the input string and then create some JSON from it. The first could be a task for a Regex and since your desired JSON seems to have only string values, also the second task could be done by the regex:

var s = "tag_id=0x770000001103AE6FF40DDF9D, tid=0xE2003412013DC2FFEE1223ED160E0142100548BBFF80DC60, user_data=0x12A7B70991000000006E5C05D37F0000, first=2018-12-03T22:52:16.218, antenna=1, rssi=-471, tid_authentic=AUTHENTIC, pw_authentic=AUTHENTIC";

var regex = new Regex(@"(?<n>\w+)=(?<v>\w+)");

var json = "{" + regex.Replace(s, m => string.Format("\"{0}\":\"{1}\"", m.Groups["n"].Value, m.Groups["v"])) + "}";

Upvotes: 1

Related Questions