#c# #json #httpwebresponse
#c# #json #httpwebresponse
Вопрос:
У меня есть поток httpwebresponse в этом формате в виде строки.
{"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}]}
Я бы хотел проанализировать значение 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}]
Если результат в формате json, мы могли бы легко разобрать его. Но этот результат находится в строковом формате. Я попытался преобразовать строку в json с помощью Json.parse, а затем применить синтаксический анализ json. Но это не помогло. Может быть, я не пробовал это правильно. Кто-нибудь может помочь?
Комментарии:
1. Как это не помогло? Что произошло? Какой код вы написали?
Ответ №1:
Легко использовать Json.Net . Просто объявите свои конкретные классы, а затем десериализуйте.
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; }
}
Вы также можете использовать встроенный System.Web.Script.Serialization.JavaScriptSerializer
var root = new JavaScriptSerializer().Deserialize<RootObject>(yourJsonString);
Ответ №2:
Я думаю, вам нужно использовать JSON.NET . Это лучше, чем любая другая библиотека для Json.
Если у вас есть строка, десериализуйте ее следующим образом
JsonObject obj = JsonConvert.DeserializeObject(stringToPass);
Это предоставит вам JSONObject, поскольку вы работаете с JSONArrays, попробуйте это
JsonArray arr = JsonConvert.DeserializeObject(stringToPass);
// should start with [
Для получения дополнительной информации от разработчика перейдите сюда: http://james.newtonking.com/json