我正在使用 Newtonsoft.JSON 将 DataTable 序列化为单个 JSON 负载。
生成的有效负载如下所示:
[
{
"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"
}
},...
]
有什么方法可以实现这种转变吗? 我一直在研究正则表达式,但没有任何运气。
我一直在尝试不同的正则表达式模式,我看到了另一个类似但使用 JavaScript 映射的 SO 解决方案?
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 只有 2 列:Property_Name 和 Property_Value 我正在序列化它
JsonConvert.SerializeObject(myDataTable);
最佳答案
我可能会使用 LINQ 将数据表转换为您喜欢的格式。您没有提供实际的数据表,但转换将是这样的:
IEnumerable<Data> yourData = GetData();
var transformedData = yourData.Select(d => new {
Name = d.Name,
Value = new {
Value = d.Value
}
});
string json = JsonConvert.SerializeObject(transformedData);
json
变量现在(希望如此)应该是您想要的格式,而无需使用正则表达式。
关于c# - 如何将 JSON 属性值转换为键和值数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57778421/