JSON 元素读取器 .NET



我有一个简单的JSON示例,如下所示:

{
   "items": {
      "element": ["item 1","item 2"]
   },
   "name": "James"
}

和这样的 JSON 架构:

{
 'type': 'object',
 'properties': {
    'name': {'type':'string'},
    'items': {
        'type': 'object',
        'properties':{
            'element':{
                'type':'array',
                'items':[{'type':'string', 'type':'string'}]
             }
        }
    }
  },
 'additionalProperties': false
}

使用给定的架构和数据在 JSON.NET 中调用"IsValid()"方法将返回VALID

问题:
如何遍历和编辑 JSON 中的元素?
我的目标是在数据库中查找节点"element"的值,然后用广义值替换它(如果它们存在),例如"item 1"数据库中存在并将替换为"general value A"。但是,数据库中不存在"item 2",并且在调用该方法时应引发某种错误消息IsValid()

请注意,这是一个使用 .NET 4.5 和 JSON.NET 库的桌面应用程序,它将用作数据清理工具。我对任何类型的替代库持开放态度,只要它们与 .NET 4.5 兼容。

不完全理解您的问题IsValid()问题部分,但如果谈论遍历 json 元素和编辑,您可以使用 2 种方法。首先在VS:Install-package newtonsoft.json的Package-Manager中安装Newtonsoft.Json。

  1. 创建类JsonItems ,描述输入 JSON 层次结构

      class JsonItems
      {
         public Items items;
         public string name;
      }
      class Items
      {
         public List<string> elements { get; set; }
      }
    

现在,您可以合法地反序列化 json,并将result编辑为任何 .net 对象。

       string jsonItems = @"{
                        'items': {
                           'element': ['item 1','item 2']
                        },
                        'name': 'James'
                    }";
        var result = JsonConvert.DeserializeObject<JsonItems>(jsonItems);
        result.items = new Items
        {
            elements = new List<string> {"itemd 3", "item 4"}
        };

2. 第二种方法更快(在实现中),但在运行时不太安全。在dynamic的帮助下.

        dynamic d = JObject.Parse(jsonItems);
        d.items.element[1] = "item 3";

相关内容

  • 没有找到相关文章

最新更新