2017-11-09 49 views
0

私のJSON文字列は次のとおりです。JSON文字列のC#から値を抽出する

{ 
    "data": { 
    "order_reference": "7000016543", 
    "package_data": [ 
     { 
     "tracking_no": "34144582723408", 
     "package_reference": "7000016543" 
     } 
    ] 
    }, 
    "success": true 
} 

私は、このJSONからtracking_noを取得するにはどうすればよいです。

私は

dynamic jsonObj = JsonConvert.DeserializeObject(bytesAsString); 

、その後

foreach (var obj in jsonObj.items) 
     { 

     } 

を使用してみましたが、それは唯一の注文番号を生成します。

答えて

0

あなたのコードに関する問題は、ルートjsonオブジェクトにはコレクションがありません。私はそれがオブジェクトではないという意味です。それは単なるオブジェクトであり、それはあなたが直接アクセスできる子供です。そして、あなたはコレクションpackage_dataを持っています。だからあなたはそれのために行くことができます。 ここにあなたのjsonデータのスキーマがあります。 schema of your json string

foreach(dynamic item in jsonObj.item.package_data) 
{ 
    //item.tracking_no; 
    //item.package_reference 
} 
+1

を使用してデシリアライズすることができますが、あなたは 'に' jsonObj.item.package_data'を変更する必要がありますjsonObj.data.package_data' –

+0

ありがとうございます。出来た。 – user1377504

2

あなたはJSONのための型を作成することができます。

namespace Example 
{ 
    using System; 
    using System.Net; 
    using System.Collections.Generic; 

    using Newtonsoft.Json; 

    public class MyObject 
    { 
     [JsonProperty("data")] 
     public Data Data { get; set; } 

     [JsonProperty("success")] 
     public bool Success { get; set; } 
    } 

    public class Data 
    { 
     [JsonProperty("order_reference")] 
     public string OrderReference { get; set; } 

     [JsonProperty("package_data")] 
     public PackageDatum[] PackageData { get; set; } 
    } 

    public class PackageDatum 
    { 
     [JsonProperty("package_reference")] 
     public string PackageReference { get; set; } 

     [JsonProperty("tracking_no")] 
     public string TrackingNo { get; set; } 
    } 
} 

その後、あなたはそれが働いているJsonConvert.Deserialize<MyObject>(input);

関連する問題