1

json 応答を文字列として取得しました。json を以下に示します。

"code": 0,
"message": "success",
"students": {
   "details":{
    "hjeke": {
        "id": "257633000000070001",
        "name": "hjeke",
        "percentage": 36,
        "type": "Good",
    },
    "Second": {
        "id": "257633000000073001",
        "name": "Second",
        "percentage": 4,
        "type": "bad",
    }
  }
}

hjekeとSecondのように、多くのキーと値のペアがあります。Newtonsoft.json を使用して json を逆シリアル化するにはどうすればよいです

4

5 に答える 5

2

以前の質問 How to deserialize json data in windows phone? で私の解決策を理解してみてください。

その質問の最初の JSON は適切で使いやすかったです。JSON では、フィールド名が一意であり、デシリアライズするのに不便です。そのため、コード ジェネレーターを使用すると、インスタンスごとにpublic class Hjekeやなどの問題が発生しました。public class Second

学生のリストで JSON 構造を使用します。

"code": 0,
"message": "success",
"students": [
    {
        "id": "257633000000070001",
        "name": "hjeke",
        "percentage": 36,
        "type": "Good",
    },
    {
        "id": "257633000000073001",
        "name": "Second",
        "percentage": 4,
        "type": "bad",
    }]

優れた柔軟な構造です。これを使用すると、次のような明白ではないフィールドを解析する必要はありません

"details":{
    "hjeke": {

等々。

そして、以前の回答から、クラスを使用してそれらを操作します。主なアイデア - オブジェクトのリストが必要です。public List<StudentDetails> students. 次に、students使いやすい List ですべてのオブジェクトをデシリアライズします。

于 2013-11-05T11:04:37.300 に答える
1

あなたの応答文字列にはいくつかの間違いがあります。有効なjsonではありません

以下のように小さな変更を加えます。

{
    "code": 0,
    "message": "success",
    "students": {
        "details": {
            "hjeke": {
                "id": "257633000000070001",
                "name": "hjeke",
                "percentage": 36,
                "type": "Good"
            },
            "Second": {
                "id": "257633000000073001",
                "name": "Second",
                "percentage": 4,
                "type": "bad"
            }
        }
    }
}

あなたは違いを理解することができます

次の手順に従います。

1 .このリンクJson to C# に移動します

2 .Json 文字列をそこに配置し、C# クラス オブジェクトを生成します

3 .ここで、ソリューションにこのクラスを作成します

4 .次に、以下のようにデシリアライズします

var DeserialisedObject = JsonConvert.DeserializeObject<Your Class>(YourJsonString);
于 2015-05-29T06:34:23.800 に答える
0

まず、クラスを作成します。

public class Hjeke
{
    public string id { get; set; }
    public string name { get; set; }
    public int percentage { get; set; }
    public string type { get; set; }
}

public class Second
{
    public string id { get; set; }
    public string name { get; set; }
    public int percentage { get; set; }
    public string type { get; set; }
}

public class Details
{
    public List<Hjeke> hjeke { get; set; }
    public List<Second> Second { get; set; }
}

public class Students
{
    public List<Details> details { get; set; }
}

public class RootObject
{
    public int code { get; set; }
    public string message { get; set; }
    public List<Students> students { get; set; }
}

その後、JSON.NET を使用して逆シリアル化します。

var deserialized = JsonConvert.DeserializeObject<Class1>(YourStringHere);
于 2013-11-05T10:31:33.030 に答える