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
.
创建 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";
我有一个像这样的简单 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
.
创建 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";