Как отобразить значение свойства перед каждым элементом массива JSON?

1

Вот строка 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"
    }
   ]
}

Заранее спасибо.

  • 0
    На каком языке вы говорите? Очевидно, нет способа сделать это по умолчанию, поскольку такой формат не является настоящим JSON.
Теги:
json.net

1 ответ

1
Лучший ответ

Вы можете приблизиться к выходу с помощью 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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню