C # Пользовательская сериализация списка Json.NET - PullRequest
1 голос
/ 08 мая 2019

У меня есть список классов DataObject:

public class DataObject
    {
        public string Name { get; set; }

        public List<Field> Fields { get; set; }
    }
}



public class Field
{

    public string Name { get; set;}
    public string Type { get; set; }
    public Object Value { get; set; }

    public Field(string name, string type, string value)
    {
        Name = name;
        Type = type;
        if(type == "string") Value = (string)value;
        else Value = Int32.Parse(value);
    }
}

и я хотел бы сериализовать List из классов DataObject в файл .json. Как я покажу ниже, используя Json.NET, я попробовал несколько сценариев, но не нашел, как это сделать.

Пример:

Field field1 = new Field("Brand", "string", "Volvo);
Field field2 = new Field("Power", "int", 200);
List<Field> fields = new List<Field>{field1, field2};
DataObject car = new DataObject{
   Name = "Car",
   Fields = list
}
List<DataObjects> objects = new List<DataObjects>{car};

Результат:

{
 "Car":{
   "Brand" : "Volvo",
   "Power" : 200
  }
}

1 Ответ

3 голосов
/ 08 мая 2019

Используя Newtonsoft.Json, сериализация довольно проста.Я взял ваш код и добавил следующую строку:

string json = JsonConvert.SerializeObject(objects, Newtonsoft.Json.Formatting.Indented);

, и он дал мне следующий вывод:

[
  {
    "Name": "Car",
    "Fields": [
      {
        "Name": "Brand",
        "Type": "string",
        "Value": "Volvo"
      },
      {
        "Name": "Power",
        "Type": "int",
        "Value": 200
      }
    ]
  }
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...