【问题标题】:Parse JSON object containing multiple arrays in C#在 C# 中解析包含多个数组的 JSON 对象
【发布时间】:2017-11-02 18:53:02
【问题描述】:

JSON 对象:

{"ID":8841,"Data":[{"Type":0,"Value":20.5},{"Type":1,"Value":-2.9},{"Type":2,"Value":12}],"Alert":[{"Type":0,"Value":[1,0,1]},{"Type":1,"Value":[0,0,0]},{"Type":2,"Value":[1,1,0]}]}

有没有什么方法可以解析上述对象,使得每个值都存储在其对应的变量中。

在数据数组中, type = 0 的值应存储在变量 (var value_0) 中 同样,type = 1 的值应该存储在变量 (var value_1) 中,type = 2 的值应该存储在变量 (var value_2) 中

在警报中, 类型 0 的值数组应存储在三个变量中(alert_type0_condition0、alert_type0_condition1、alert_type0_condition2)。 同理,类型1的值数组应该存储在三个变量中(alert_type1_condition0,alert_type1_condition1,alert_type1_condition2),类型2的值数组应该存储在三个变量中(alert_type2_condition0,alert_type2_condition1,alert_type2_condition2)

【问题讨论】:

  • 反序列化它而不是逐个元素地解析它
  • 您可以通过问题中指定的方式将其反序列化为变量来向我展示一个示例吗?
  • 为什么需要一个名为 val_0_0 的变量?或者那些只是更好名字的替代品?
  • 您需要自己进行研究。我给了你关键字,所以你应该可以像我一样轻松地在这里找到关于该主题的 2870 个帖子
  • @EdPlunkett,是的,他们是替补

标签: c# arrays json json.net


【解决方案1】:

尝试使用 jobject 而不是反序列化

如果您想将 json 转换为类的对象

public UserData 
{
    public int ID { get; set; }
    public DataDto Data { get; set; }
}

public Data 
{
    public string Type { get; set; }
    public string value{ get; set; }
}

然后使用 JavaScriptSerializer 将 json 转换成对象

string json = //your json {} ;
JavaScriptSerializer serializer = new JavaScriptSerializer();
var Data = serializer.Deserialize<UserData>(json);

【讨论】:

  • 我能够解析它。我可以在变量中访问/存储“ID”,但无法访问 Data 数组或 Alert 数组中的元素。
  • 解析的缺点是 3 个数组位于不同的位置,然后必须循环遍历每个数组以提取每个元素。
  • ok @TheChosenOne94 ...所以您希望将 json 转换为具有许多属性(如 ID)的 c# 对象,然后您想使用该对象...我正确吗?
  • @RohitasBehera 是的。我想将 Data 和 Alert 对象中存在的数组存储到变量中
  • 你能把值存储在类型的基础上吗?即,将 type= 1 对应的值存储在 val1 变量中。在您提到的解决方案中,我无法确定该值属于哪种类型。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多