-6

I have a httpwebresponse stream in this format as a string.

{"totalUsersCount":
[{"AccountStatus":1,"TotalUsers":53,"MemberUsers":33,"CrimsonUsers":20},
{"AccountStatus":2,"TotalUsers":7,"MemberUsers":7,"CrimsonUsers":0},
{"AccountStatus":3,"TotalUsers":44,"MemberUsers":37,"CrimsonUsers":7},
{"AccountStatus":6,"TotalUsers":28718,"MemberUsers":28718,"CrimsonUsers":0},
{"AccountStatus":5,"TotalUsers":3,"MemberUsers":3,"CrimsonUsers":0}]}

I would want to parse out the value of totalUsersCount alone so that I get the parsed out result in this format

[{"AccountStatus":1,"TotalUsers":53,"MemberUsers":33,"CrimsonUsers":20},
{"AccountStatus":2,"TotalUsers":7,"MemberUsers":7,"CrimsonUsers":0},
{"AccountStatus":3,"TotalUsers":44,"MemberUsers":37,"CrimsonUsers":7},       
{"AccountStatus":6,"TotalUsers":28718,"MemberUsers":28718,"CrimsonUsers":0},
{"AccountStatus":5,"TotalUsers":3,"MemberUsers":3,"CrimsonUsers":0}]

If the result is in json format we could easily parse it out. But this result is in string format. I tried to jsonize the string using Json.parse and then apply json parsing. But that didn't help. May be I didn't try it the right way. Could anyone help?

Afzaal Ahmad Zeeshan
  • 15,669
  • 12
  • 55
  • 103

2 Answers2

2

It is easy using Json.Net. Just declare your concrete classes and then deserialize.

var root = JsonConvert.DeserializeObject<RootObject>(yourJsonString);

foreach (var item in root.TotalUsersCount)
{
    Console.WriteLine(item.AccountStatus);
}

var allusers = root.TotalUsersCount.Sum(u => u.TotalUsers);

public class TotalUsersCount
{
    public int AccountStatus { get; set; }
    public int TotalUsers { get; set; }
    public int MemberUsers { get; set; }
    public int CrimsonUsers { get; set; }
}

public class RootObject
{
    public List<TotalUsersCount> TotalUsersCount { get; set; }
}

You can also use the built-in System.Web.Script.Serialization.JavaScriptSerializer

var root = new JavaScriptSerializer().Deserialize<RootObject>(yourJsonString);
L.B
  • 114,136
  • 19
  • 178
  • 224
0

I think you need to use JSON.NET. Its better than any other library for Json.

If you've got a string, DeSerialize it like this

JsonObject obj = JsonConvert.DeserializeObject(stringToPass);

It would provide you with a JsonObject since you're working with JsonArrays, try this

JsonArray arr = JsonConvert.DeserializeObject(stringToPass); 
// should start with [

For more by developer, go here: http://james.newtonking.com/json

Afzaal Ahmad Zeeshan
  • 15,669
  • 12
  • 55
  • 103