Динамическое создание Json из набора данных C # с отношением Parent / Child

Нет стандартных вызовов библиотеки, но вы можете захотеть просмотреть библиотеку ExSwift . Он включает в себя множество новых функций в массивах, включая разницу, пересечение и объединение.

0
задан Julia 16 January 2019 в 15:58
поделиться

1 ответ

Вы можете сделать это за пару шагов.

Шаг 1 : Установите для свойства Relation.Nested значение True.

dsSet.Relations.Add(
    "RelationCustumerOrder",
    dsSet.Tables["Custumer"].Columns["CustumerId"],
    dsSet.Tables["Order"].Columns["CustumerId"]
    );
dsSet.Relations[0].Nested = true;  

Шаг 2 : преобразовать в Xml.

StringWriter sw = new StringWriter();
dsSet.WriteXml(sw);
string xmlString = sw.ToString();

Шаг 3 : Сериализация в качестве Json для окончательного результата

XmlDocument doc = new XmlDocument();
doc.LoadXml(xmlString);
JsonSerializerSettings settings = new JsonSerializerSettings();
settings.TypeNameHandling = TypeNameHandling.All;

string jsonResult = JsonConvert.SerializeXmlNode(doc, Newtonsoft.Json.Formatting.Indented);

Окончательный результат для образца будет

{
  "OrderManagement": {
    "Custumer": [
      {
        "CustumerId": "1",
        "Name": "Chris",
        "Order": [
          {
            "OrderId": "1",
            "CustumerId": "1",
            "Article": "chocolate"
          },
          {
            "OrderId": "2",
            "CustumerId": "1",
            "Article": "apples"
          }
        ]
      },
      {
        "CustumerId": "2",
        "Name": "Ronja",
        "Order": {
          "OrderId": "3",
          "CustumerId": "2",
          "Article": "dogfood"
        }
      },
      {
        "CustumerId": "3",
        "Name": "Thomas",
        "Order": [
          {
            "OrderId": "4",
            "CustumerId": "3",
            "Article": "keyboard"
          },
          {
            "OrderId": "4",
            "CustumerId": "3",
            "Article": "tomatos"
          },
          {
            "OrderId": "4",
            "CustumerId": "3",
            "Article": "green tea"
          }
        ]
      }
    ]
  }
}
0
ответ дан Anu Viswan 16 January 2019 в 15:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: