从json字符串C#中提取值

时间:2017-11-09 07:28:36

标签: c# asp.net json

我的json字符串如下:

{
  "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)
        {

        }

但它只产生订单参考。

2 个答案:

答案 0 :(得分: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);

反序列化

答案 1 :(得分:0)

关于代码的问题是:根json对象上没有集合。我的意思是它不是一个对象。因为它只是一个物体,它可以直接访问它的孩子。然后你有一个收集package_data。所以你可以在其中进行循环。 这是json数据的模式。 schema of your json string

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