我正在尝试从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创建集合项
答案 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"]));