JSON 元素 reader .NET

JSON element reader .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()" 方法将 return VALID

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

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

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

  1. 创建 class 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";