【问题标题】:Ways to parse Json recursive [closed]解析Json递归的方法[关闭]
【发布时间】:2019-12-27 12:38:32
【问题描述】:

我的问题是我需要将 json 解析为另一种 json 格式,我需要这样做递归。我已经尝试过不同的方式,但任何方式都适合我。 我想知道更多的测试方法。 谢谢!

    {
  "items": {
    "itemName": {
      "type": "type",
      "properties": {
        "item1": {
          "type": 1,
          "isValid": true
        },
        "item2": {
          "type": 1,
          "isValid": true
        }
      }
    }
  }
}

我需要做这个

{
    "items":{
        "item1": 1,
        "item2": 1
    }
}

【问题讨论】:

  • 能否分享一些数据、例子和代码
  • 什么是“另一种”json格式?
  • 1.使用JSON.Net解析为dynamic或与输入格式匹配的具体类2.将输入格式中的数据复制到新的类格式中。
  • I have been tried diferents way 你为什么不分享你解决这个问题的尝试?我们可以帮助您让它发挥作用。

标签: c# json parsing


【解决方案1】:

您可以尝试使用JToken 读取JSONJsonConvert 以将对象转换为所需的JSON

using (StreamReader r = new StreamReader(filepath))
{
    var inputString = r.ReadToEnd();
    JToken outer = JToken.Parse(inputString);
    JObject inner = outer["items"]["itemName"]["properties"].Value<JObject>();

    List<string> keys = inner.Properties().Select(p => p.Name).ToList();
    var items = new ExpandoObject() as IDictionary<string, Object>;

    foreach (string k in keys)
    {
        items.Add(k, Convert.ToInt32(outer["items"]["itemName"]["properties"][k]["type"]));
    }

    Console.WriteLine(JsonConvert.SerializeObject(new { items = items }));
}

输出

{"items":{"item1":1,"item2":2}}

【讨论】:

    猜你喜欢
    • 2015-03-08
    • 2011-05-05
    • 1970-01-01
    • 2018-09-30
    • 2019-08-28
    • 1970-01-01
    • 2012-01-17
    • 1970-01-01
    • 2021-01-07
    相关资源
    最近更新 更多