如何将json格式转换为另一种格式

时间:2014-03-12 13:04:02

标签: json json.net

您好我想将json从一种格式转换为另一种格式,如下所示。我的Json格式如下所示 我尝试使用Json.Net插件。但无法找到解决方案

[
{

    "bundleKey": "title",
    "bundleValue": "Manage cost code",

},
{

    "bundleKey": "name",
    "bundleValue": "steve",

}]

想要转换为以下格式

[{"title":"Manage cost code"},{"name":"steve"}]

我尝试使用以下链接

JSON Serialize List<KeyValuePair<string, object>>

2 个答案:

答案 0 :(得分:3)

这是一种快速的方法,您可以使用Json.Net将JSON从一种格式转换为另一种格式(假设输入是有效的JSON - 正如您发布的那样,在bundleValues之后还有额外的逗号,我已在下面的代码中删除):

string json = @"
[
    {
        ""bundleKey"": ""title"",
        ""bundleValue"": ""Manage cost code""
    },
    {
        ""bundleKey"": ""name"",
        ""bundleValue"": ""steve""
    }
]";

JArray array = JArray.Parse(json);
JArray outputArray = new JArray();
foreach (JObject item in array)
{
    JObject outputItem = new JObject();
    outputItem.Add(item["bundleKey"].ToString(), item["bundleValue"]);
    outputArray.Add(outputItem);
}

string outputJson = outputArray.ToString(Formatting.None);
Console.WriteLine(outputJson);

输出:

[{"title":"Manage cost code"},{"name":"steve"}]

答案 1 :(得分:1)

   private static List convert(List<Map> jsonNode) {
    if(jsonNode == null)
        return null;
    List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();
    for (Map json :  jsonNode) {
        Map tmp = new HashMap();
        putVaue(tmp, json);
        result.add(tmp);
    }
    return result;
}

private static void putVaue(Map<String, Object> result,
    Map<String, Object> jsonNode) {
    String key = (String) jsonNode.get("bundleKey");
    Object value = jsonNode.get("bundleValue");
    result.put(key, value);
}