解析JSONObject

时间:2013-05-04 20:48:59

标签: c# json windows-runtime

我正在尝试从Web服务中获取JSON,我能够弄清楚。 BTW这是我的JSON数据 -

   {
    "X-YZ-111/AB.CD": {
        "P1": "F",
        "P2": "43.46"
    },        

    "X-YZ-112/AB.CD": {
        "P1": "F",
        "P2": "8.02"
    },
    "X-YZ-113/AB.CD": {
        "P1": "F",
        "P2": "9066.58"
    },
    "X-YZ-114/AB.CD": {
        "P1": "F",
        "P2": "6.00"
    },
    "X-YZ-115/AB.CD": {
        "P1": "F",
        "P2": "6.00"
    },        
    "X-YZ-116/AB.CD": {
        "P1": "F",
        "P2": "10.00"
    }}


Using Windows.Data.Json;

private async void getJSON_click(object sender,RoutedEventArgs e)

{ 
   var client=new HttpClient();
   client.MaxResponseBufferSize=1024*1024;
   var response= await Client.GetAsync(new Uri(The URL here));
   var result = await response.Content.ReadAsStringAsync();

   var component=JsonObject.Parse(result);

}

现在我可以尝试将其解析为一个集合,其中每个项目都有“X-YZ-111 / AB.CD”作为名称属性,P1和P2作为其他2个属性,我将尝试绑定到稍后使用CollectionViewSource在UI中进行平铺。

现在这是Json2CShardpDotCom正在生成的C#类

public class Name
{
    public string Type { get; set; }
    public string Val { get; set; }
}

public class Root 
{
    public Name Name { get; set; }
}

有关如何使用foreach循环这些值的任何建议以及我应该在C#中创建哪些类?

编辑1:BTW我知道必须有一个字典,我首先在外循环上执行foreach以检索内部循环上的Name和foreach以检索P1和P2。

但我很困惑我应该在C#中使用哪些类来使用JSON并使用我的JSON创建集合项

1 个答案:

答案 0 :(得分:2)

  

我很困惑我应该在C#中使用哪些类来使用JSON并使用我的JSON创建集合项

你不需要任何课程。只是一点点Linq

我会将Json.Net用于此

var jObj = JObject.Parse(result);
var dict = jObj.Children()
           .Cast<JProperty>()
           .ToDictionary(p => p.Name, 
                         p => new Tuple<string, string>((string)p.Value["P1"], (string)p.Value["P2"]));

就是这样。样本用法是:


foreach (var kv in dict)
{
    Console.WriteLine("{0}: {1} {2}", kv.Key, kv.Value.Item1, kv.Value.Item2);
}

修改

使用JsonObject的相同代码

var jObj = JsonObject.Parse(json);
var dict = jObj.Cast<KeyValuePair<string, JsonValue>>()
           .ToDictionary(j=>j.Key,
                         j=>new Tuple<string,string>(j.Value["P1"],j.Value["P2"]));