Десериализация строки JSON с помощью JSON.NET - PullRequest
1 голос
/ 13 ноября 2010

Я беспомощен, мне нужно десериализовать строку JSON в этом формате для класса.

Строка JSON:

{"newNickInfo":{"2775040":{"idUser":2775040,"nick":"minci88","sefNick":"minci88","sex":2,"photon":"http:\/\/213.215.107.125\/fotky\/277\/50\/n_2775040.jpg?v=4","photos":"http:\/\/213.215.107.125\/fotky\/277\/50\/s_2775040.jpg?v=4","logged":false,"idChat":0,"roomName":"","updated":1289670130}}}

Класс:

public class User
{
public string idUser{get;set;}
public string nick{get;set;}
public string sefNick{get;set;}
public string sex{get;set;}
public string photon{get;set;}
public string photos{get;set;}
public bool logged{get;set;}
public int idChat{get;set;}
public string roomName{get;set;}
public string updated{get;set;}
}

Первая проблема заключается в том, что свойства класса должны быть в нижнем регистре, а вторая проблема в том, что я пробую много способов, но я не знаю, как вырезать объект json из этой строки json и десериализовать в классе. Любые иды? Спасибо за любую помощь.

Еще один вопрос, в каком формате будет класс c #, если я хочу десериализовать эту строку json в нее.

Ответы [ 3 ]

1 голос
/ 13 ноября 2010

похоже, что ваша строка JSON неверна.Посмотрите на это

string json = @"[

    {
      "newNickInfo": "2775040", 
      "idUser": "2775040",
      "nick":"minci88",
      "sefNick":"minci88",
      "sex":2,
      "photon":"http:\/\/213.215.107.125\/fotky\/277\/50\/n_2775040.jpg?v=4",
      "photos":"http:\/\/213.215.107.125\/fotky\/277\/50\/s_2775040.jpg?v=4",
      "logged":false,
      "idChat":0,
      "roomName":"",
      "updated":"1289670130"
     }
]";



public class User 
{
[JsonProperty] 
public string idUser{get;set;}
[JsonProperty] 
public string nick{get;set;}
[JsonProperty] 
public string sefNick{get;set;}
[JsonProperty] 
public string sex{get;set;}
[JsonProperty] 
public string photon{get;set;}
[JsonProperty] 
public string photos{get;set;}
[JsonProperty] 
public bool logged{get;set;}
[JsonProperty] 
public int idChat{get;set;}
[JsonProperty] 
public string roomName{get;set;}
[JsonProperty] 
public string updated{get;set;} 
}


List<User> users = JsonConvert.DeserializeObject<List<User>>(json);

User u1 = users[0];

Console.WriteLine(u1.nick);
0 голосов
/ 03 ноября 2011

Я использую этот инструмент Jsonclassgenerator . Он может генерировать классы C # для входной строки Json. Вам не нужно использовать точный сгенерированный класс. Но вы можете увидеть формат класса и создать аналогичный в своем проекте.

0 голосов
/ 13 ноября 2010
using System.Web.Script.Serialization;

var serializer = new JavaScriptSerializer();
var deserialized = serializer.Deserialize<Dictionary<string, Dictionary<string, User>>>(theJsonString);
var theUser = deserialized["newNickInfo"]["2775040"];
...