несколько объектов json в in object (json.net )

#json.net

#json.net

Вопрос:

Возможно ли получить такой формат :

 "list":{
  "one":{
    "fieldone":"-----",
    "fieldtwo":"-----"
   },
  "two":{
     "fieldone":"-----",
     "fieldtwo":"-----"
   }
 }
 

Я не хочу, чтобы массив [] или имена «один» и «два» были удалены, я изо всех сил пытаюсь получить точный следующий формат.

Комментарии:

1. Является ли проблема кодированием, декодированием или отображением данных?

2. У меня есть данные, и я хочу сериализовать их в этот формат, но я не вижу, как добавить несколько объектов json в объект json, когда я использую объект list, «список» становится массивом вместо объекта json, а поля «on» и «two»просто исчезни.

3. Используйте пользовательский JsonConverter . james.newtonking.com/json/help/index.html?topic=html /…

Ответ №1:

Если вы поместите свои элементы в словарь вместо списка, вы можете получить желаемый результат. Вот пример:

 class Program
{
    static void Main(string[] args)
    {
        RootObject obj = new RootObject();
        obj.Items = new Dictionary<string, Item>();
        obj.Items.Add("one", new Item { FieldOne = "foo", FieldTwo = "bar" });
        obj.Items.Add("two", new Item { FieldOne = "fizz", FieldTwo = "bang" });

        string json = JsonConvert.SerializeObject(obj, Formatting.Indented);
        Console.WriteLine(json);
    }
}

class RootObject
{
    [JsonProperty("list")]
    public Dictionary<string, Item> Items { get; set; }
}

class Item
{
    [JsonProperty("fieldone")]
    public string FieldOne { get; set; }
    [JsonProperty("fieldtwo")]
    public string FieldTwo { get; set; }
}
 

Вывод:

 {
  "list": {
    "one": {
      "fieldone": "foo",
      "fieldtwo": "bar"
    },
    "two": {
      "fieldone": "fizz",
      "fieldtwo": "bang"
    }
  }
}