如何在每个JSON数组项前面显示属性值

本文关键字:前面 显示 属性 数组 JSON | 更新日期: 2023-09-27 18:24:57

这是我正在使用的JSON字符串。

{
  "id": 1,
  "title": "A Test",
  "items": [
    {
      "id": 157,
      "title": "some article",      
      "type": "Article"
    },
    {
      "id": 153,
      "title": "some other article",     
      "type": "Article"
    }
   ]
}

我正在使用Json.Net进行序列化。在显示之前,我可以这样格式化JSON吗?

{
  "id": 1,
  "title": "A Test",
  "items": [
    "157" : {
      "title": "some article",      
      "type": "Article"
    },
    "153" : {
      "title": "some other article",     
      "type": "Article"
    }
   ]
}

提前谢谢。

如何在每个JSON数组项前面显示属性值

您可以使用Json.Net的LINQ-to-Json API(JObjects)来转换原始Json,从而非常接近您想要的输出。这里有一种方法:

public static string Transform(string json)
{
    JObject root = JObject.Parse(json);
    JObject itemsObj = new JObject();
    foreach (JObject item in root["items"])
    {
        JToken id = item["id"];
        id.Parent.Remove();
        itemsObj.Add(id.ToString(), item);
    }
    root["items"].Parent.Remove();
    root.Add("items", itemsObj);
    return root.ToString();
}

如果您将原始JSON传递给此方法,您将获得以下输出:

{
  "id": 1,
  "title": "A Test",
  "items": {
    "157": {
      "title": "some article",
      "type": "Article"
    },
    "153": {
      "title": "some other article",
      "type": "Article"
    }
  }
}

Fiddle:https://dotnetfiddle.net/1di41P