0

最初、私のjsonはフォーマットでしたが、

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

そして、Newtonsoft.jsonを使用して逆シリアル化するために次のクラスを使用しました

[DataContract]
public class students
{
    [DataMember(Name = "code")]
    public int Code { get; set; }

    [DataMember(Name = "message")]
    public string Message { get; set; }

    [DataMember(Name = "students")]
    public StudentDetail StudentDetail { get; set; }
}
[DataContract]
public class StudentDetail 
{
    [DataMember(Name = "id")]
    public string ID { get; set; }

    [DataMember(Name = "name")]
    public string Name { get; set; }

    [DataMember(Name = "percentage")]
    public double PercentageForEdit { get; set; }

    [DataMember(Name = "type")]
    public string Type { get; set; }
}

しかし今、私の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",
        }
      }
  }

生徒のクラスを変更するにはどうすればよいですか

  StudentDetails = JsonConvert.DeserializeObject<Students>(data);
4

2 に答える 2

2

Newtonsoft.Json を使用している場合は、そのクラスを使用してみてください。

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

public class Student
{
    public int code { get; set; }
    public string message { get; set; }
    public List<StudentDetails> students { get; set; }
}

その後、そのクラスを使用して、次の方法で応答を逆シリアル化できます。

var parsedResponse = JsonConvert.DeserializeObject<Student>(data);

[DataContract]PS もちろん、[DataMember]属性を忘れないでください

于 2013-11-05T09:14:41.973 に答える
0

まず、Json が有効ではないようです。オブジェクト { } の周囲の括弧がありません。一致する C# クラスを見つけるには、このサイトに優れたコンバーターがあります

オブジェクト ブラケットを使用した 2 番目の 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",
    }
  }
}

次のクラスを提案します。

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 Hjeke hjeke { get; set; }
  public Second Second { get; set; }
}

public class Students
{
  public Details details { get; set; }
}

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

このジェネレーター ツールを自分で試してみることができます。

于 2013-11-05T07:42:18.457 に答える