C# 如何将JSON属性值转换为键和值数组
我使用Newtonsoft.JSON将数据表序列化为单个JSON负载 生成的有效负载如下所示:C# 如何将JSON属性值转换为键和值数组,c#,json,regex,C#,Json,Regex,我使用Newtonsoft.JSON将数据表序列化为单个JSON负载 生成的有效负载如下所示: [ { "Name" : "Example_Name_1", "Value": "Example Value 1" }, { "Name" : "Example_Name_2", "Value": "Example Value 2" },... ] 对于与外部库一起使用,我需要它: [ {
[
{
"Name" : "Example_Name_1",
"Value": "Example Value 1"
},
{
"Name" : "Example_Name_2",
"Value": "Example Value 2"
},...
]
对于与外部库一起使用,我需要它:
[
{
"Name" : "Example_Name_1",
"Value": {
"Value": "Example Value 1"
}
},
{
"Name" : "Example_Name_2",
"Value": {
"Value": "Example Value 2"
}
},...
]
有没有办法进行这种转变?
我一直在研究正则表达式,但运气不好
我一直在玩不同的正则表达式模式,我看到了另一个类似的SO解决方案,但使用了JavaScript映射
var strJson = "[{\"Name\": \"Example_Name_1\",\"Value\": \"Example Value 1\"}]";
var pattern = "{\"Name\": \"*\",\"Value\": \"*\"}";
var replacement = "{\"Name\": \"*\",\"Value\": {\"Value\": \"*\"}}";
var input = strJSON;
var result = Regex.Replace(input, pattern, replacement);
return result;
[编辑]
DataTable只有两列:Property\u Name和Property\u Value
我正在用
JsonConvert.SerializeObject(myDataTable);
我可能会使用LINQ将数据表转换为您喜欢的格式。您没有提供实际的datatable,但转换如下:
IEnumerable<Data> yourData = GetData();
var transformedData = yourData.Select(d => new {
Name = d.Name,
Value = new {
Value = d.Value
}
});
string json = JsonConvert.SerializeObject(transformedData);
json变量现在应该是您想要的格式,而不需要使用regex。看看Newtonsoft.json.Linq名称空间。它包含像JObject、JArray和JToken这样的类来实现您想要做的事情 下面是一个简短的片段,让您开始学习: var strJson=[{\Name\:\Example\u Name\u 1\,\Value\:\Example Value 1\}]; var newObject=JArray.ParsestrJson; forint i=0;i