1

我正在尝试从 web 服务获取 JSON,我能够弄清楚。顺便说一句,这是我的 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 个属性,我将尝试将其绑定到 UI 中的 Tile稍后使用 CollectionViewSource。

现在这是 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:顺便说一句,我知道必须有一个字典,我首先在外循环上执行 foreach 以检索名称,在内循环上执行 foreach 以检索 P1 和 P2。

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

4

1 回答 1

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"]));
于 2013-05-05T09:48:46.057 回答