1

配列を含む JSON 文字列があり、デシリアライズできません。製品とそのコードと数量のリストにアクセスできるように分割したいのですが、試行するたびにクラッシュします。Json 文字列は次のように返されます。

{
  "transaction_id": "88",
  "store_id": "3",
  "cashier_id": null,
  "loyalty_account": null,
  "transaction_time": "1382027452",
  "total_amount": "99.45",
  "items": {
    "1239219274": "1",
    "3929384913": "1"
  },
  "payments": {
    "cc": "99.45"
  }
}

私はそれを次のように分けたいと思います:

{
  "transaction_id": "88",
  "store_id": "3",
  "cashier_id": null,
  "loyalty_account": null,
  "transaction_time": "1382027452",
  "total_amount": "99.45"
}

{
  "1239219274":"1",
  "3929384913":"1"
}

{
  "cc": "99.45"
}  
4

2 に答える 2

3

EDIT : 編集を反映するように更新されました。

これは JSON 配列ではなく、基本的に値の辞書である JSON オブジェクトです。

JSON 配列は、角かっこ[ ]を使用して次のようにシリアル化されます。

{
    "name":"Outer Object",
    "items": [
        {
            "name":"Item #1"
        },
        {
            "name":"Item #2"
        },
        {
            "name":"Item #3"
        }
    ]
}

おそらく、詳細を処理してくれるJson.NETの学習に数分を費やす必要があります。

その文字列をオブジェクトに逆シリアル化する方法は次のとおりです。

public class Transaction
{
    [JsonProperty("transaction_id")]
    public int Id { get; set; }

    [JsonProperty("store_id")]
    public int StoreId { get; set; }

    [JsonProperty("cashier_id")]
    public int? CashierId { get; set; }

    [JsonProperty("loyalty_account")]
    public string LoyaltyAccount { get; set; }

    [JsonProperty("transaction_time")]
    public int TransactionTime { get; set; }

    [JsonProperty("total_amount")]
    public decimal TotalAmount { get; set; }

    [JsonProperty("items")]
    public Dictionary<string, string> Items { get; set; }

    [JsonProperty("payments")]
    public Dictionary<string, string> Payments { get; set; }
}

それから私は簡単に書くことができます:

Transaction transaction = JsonConvert.DeserializeObject<Transaction>(json);
于 2013-10-17T18:35:32.060 に答える
2

まず最初に、json 文字列にエラーがあります。次のようなオンライン バリデーターを使用して検証できます: http://jsonlint.com/

Parse error on line 9:
...   "1239219274": "1""3929384913": "1"  
-----------------------^
Expecting '}', ':', ',', ']'

そして、配列の場合、次のレイアウトがあります。

a : [1,2,3,4,5]

また、C# を使用すると、JSON.Net を使用できます。JavaScriptを使用すると、 jQuery またはYUI を使用できます。

于 2013-10-17T18:36:52.073 に答える