C# JSON元素阅读器.NET

C# JSON元素阅读器.NET,c#,json,winforms,json.net,C#,Json,Winforms,Json.net,我有一个简单的JSON示例,如下所示: { "items": { "element": ["item 1","item 2"] }, "name": "James" } JSON模式如下: { 'type': 'object', 'properties': { 'name': {'type':'string'}, 'items': { 'type': 'object', 'properties':{

我有一个简单的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()。
首先在VS的软件包管理器中安装Newtonsoft.Json:
安装软件包Newtonsoft.Json

  • 创建类
    jsonims
    ,它描述了您的输入JSON层次结构

      class JsonItems
      {
         public Items items;
         public string name;
      }
    
      class Items
      {
         public List<string> elements { get; set; }
      }
    
    二,。第二种方法更快(在实现中),但在运行时不太安全。借助
    动态

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

    我使用Newtonsoft的JSON库。例如,您可以使用JToken类方法进行遍历。
            dynamic d = JObject.Parse(jsonItems);
            d.items.element[1] = "item 3";