Manish Pant
Manish Pant

Reputation: 53

Customizing the JSON received from Web API

I need to add one more node to Json string.

Following is the code from where I am reading the data.

var url = "https://xyz_12232_abc/0908978978979.json";
var sys = new WebClient();
var content = sys.DownloadString(url);

I received following output from above code:

{
 "2312312312313":
                {
                "emailId":"[email protected]",
                "model":"XYZ001",
                "phone":"+654784512547",
                "userName":"User1"
                },
"23456464512313":
                {
                "emailId":"[email protected]",
                "model":"XYZ002",
                "phone":"+98745114474",
                "userName":"User2"
                },
"45114512312313":
                {
                "emailId":"[email protected]",
                "model":"XYZ3",
                "phone":"+214784558741",
                "userName":"User3"
                }
}

But, I want this output like below:

{
 "Records": [
                {
                "UID":"2312312312313":,
                "emailId":"[email protected]",
                "model":"XYZ001",
                "phone":"+654784512547",
                "userName":"User1"
                },

                {
                 "UID":"23456464512313":,
                "emailId":"[email protected]",
                "model":"XYZ002",
                "phone":"+98745114474",
                "userName":"User2"
                },

                {
                "UID":"45114512312313":,
                "emailId":"[email protected]",
                "model":"XYZ3",
                "phone":"+214784558741",
                "userName":"User3"
                } 
           ] 
}

Now, how can it be achieved ?

Upvotes: 2

Views: 56

Answers (1)

haim770
haim770

Reputation: 49095

You can use Json.NET to massage the data into your desired output:

var jsonStr = @"..."; // your JSON here
var obj = JsonConvert.DeserializeObject<Dictionary<string, JObject>>(jsonStr);

var formattedObj = new
{
    Records = obj.Select(x =>
    {
        x.Value.AddFirst(new JProperty("UID", x.Key));
        return x.Value;
    })
};

// serialize back to JSON
var formattedJson = JsonConvert.SerializeObject(formattedObj);

Upvotes: 3

Related Questions