Вот строка 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.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"
}
}
}
Сценарий: https://dotnetfiddle.net/1di41P