2

私は無力です。この形式の 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; }
}

最初の問題は、クラス プロパティは小文字でなければならないことです。2 番目の問題は、さまざまな方法を試しましたが、この json 文字列から json オブジェクトを切り取り、クラスで逆シリアル化する方法がわかりません。何かアイデアはありますか?助けてくれてありがとう。

もう 1 つの質問です。この json 文字列を逆シリアル化する場合、どの形式に c# クラスが含まれますか。

4

3 に答える 3

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);
于 2010-11-13T20:38:06.910 に答える
0

私はこのツールJsonclassgeneratorを使用します。入力Json文字列のC#クラスを生成できます。生成された正確なクラスを使用する必要はありません。ただし、クラスの形式を確認して、プロジェクトで同様の形式を作成することはできます。

于 2011-11-03T04:47:58.647 に答える
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"];
于 2010-11-13T19:59:49.163 に答える