c# - 如何将 JSON 属性值转换为键和值数组

标签 c# json regex

我正在使用 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/

相关文章:

c# - 处理遗留数据库时在 NHibernate 中建模多对一关系的最佳方法?

c# - 一个继承了DependencyObject的类如何使用?

javascript - 将 HTML 按钮与 Javascript 对象数据连接起来

php - Preg_Match 精确单词并从字符串文本中输出单词

java (jdk 1.6) 正则表达式

c# - Nullable Long switch 语句在 VS2015 中没有产生预期的输出

c# - 使用 Entity Framework DB 上下文 : Does not reset ID counter 进行单元测试

java - 从java中的json中删除重复的键和值

python - 从 JSON 到 CSV 的字典

c# - 验证递归字符串结构