2

私はこのJson Returnを持っています:

[
{
  "url": "http://xxx.xxx.xxx", 
  "code": 0, 
  "aplication": 
  {
    "version":
    [
    {
       "silent": true, 
       "checksum": "9aabad09b09459ac6c9e54f9ca4eb5c4",
       "size": 1250619, 
       "force": true, 
       "apply_message": "", 
       "id": 116,
       "id_aplication": 4, 
       "number": "1.0.5.0", 
       "news": "", 
       "automatic": true, 
       "installation": "Setup.exe"
    }
    ], 
    "division_name": "DNT",
    "app_name": "MyApplication", 
    "id": 4, 
    "id_master": 0
}, 
"message": "New Application Found"
}
]

このサイトhttp://json2csharp.com/を使用して、これらのクラスを生成します。

public class Version
{
    public bool silent { get; set; }
    public string checksum { get; set; }
    public int size { get; set; }
    public bool force { get; set; }
    public string apply_message { get; set; }
    public int id { get; set; }
    public int id_aplication { get; set; }
    public string number { get; set; }
    public string news { get; set; }
    public bool automatic { get; set; }
    public string installation { get; set; }
}


public class Aplication
{
    public List<Version> version { get; set; }
    public string division_name { get; set; }
    public string app_name { get; set; }
    public int id { get; set; }
    public int id_master { get; set; }
}

public class RootObject
{
    public string url { get; set; }
    public int code { get; set; }
    public Aplication aplication { get; set; }
    public string message { get; set; }
}

次に、C# コードで、次のように記述します。

RootObject test = JsonConvert.DeserializeObject<RootObject>(jsonResult);

しかし、私はこのエラーを受け取ります:

現在の JSON オブジェクト (例: {"name":"value"}) を型 'System.Collections.Generic.List`1[ConsoleAPP.Aplication]' に逆シリアル化できません3]) 正しく逆シリアル化します。このエラーを修正するには、JSON を JSON 配列 ([1,2,3] など) に変更するか、逆シリアル化された型を通常の .NET 型 (整数のようなプリミティブ型ではなく、コレクション型ではない) に変更します。 JSON オブジェクトから逆シリアル化できる配列またはリスト)。JsonObjectAttribute を型に追加して、強制的に JSON オブジェクトから逆シリアル化することもできます。パス「aplication.version」、1 行目、位置 227。

これに関するいくつかのヒントを読みましたが、役に立ちません。例えば:

WCF REST で JSON 配列を解析できません

4

1 に答える 1

5

JSONは配列です。1つのアイテムしか含まれていませんが、それでも配列です。先頭と末尾[、および]大きなJSON文字列を削除すると、正常に逆シリアル化されるはずです。

RootObject[]または、の代わりにに逆シリアル化することもできますRootObject

どちらの方法でも機能します。

于 2013-03-12T14:51:14.657 に答える