2010-11-13 5 views
1

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

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 и десериализовать в классе. Любые ides? Спасибо за любую помощь.

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

+0

Что вы делали, и какие результаты вы получили? –

ответ

0
using System.Web.Script.Serialization; 

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

Привет Доменик, ваше решение не работает. Попробуйте, я получаю ошибку компиляции: System.Collections.Generic.Dictionary > 'является «типом», но используется как «переменная» –

+0

Да, я забыл закрытие '>' ; попробуй это сейчас. – Domenic

1

похоже, что ваша строка 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

Привет, используйте проверщик JSONLint, строка в порядке http://www.jsonlint.com/. Попробуй. –

0

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

+0

Будьте внимательны при публикации копий и вставных шаблонов/ответов (http://stackoverflow.com/questions/4575445/c-sharp-class-to-parse-json-result/7996810#7996810) на несколько вопросов, это, как правило, быть помечены сообществом сообществом. – Kev

 Смежные вопросы

  • Нет связанных вопросов^_^