在c#中将sql xml转换为json时如何处理单元素json数组?

阿鲁穆鲁甘K

我正在将 SQL 输出 XML 转换为 C# 中的 JSON 转换。当我将具有多个集合元素的 XML 转换为 JSON 时,输出如 JSON 数组,同时 XML 具有单个集合,然后输出如 JSON 对象。在这两种情况下,如何将输出维护为 JSON 数组?

情况1:

<root>
   <DATA>
    <NAME>NAYAN</NAME>
    <LOCATION>CHENNAI</LOCATION>
  </DATA>
   <DATA>
    <NAME>TARA</NAME>
    <LOCATION>CHENNAI</LOCATION>
  </DATA>
 </root> 

结果:

{
   "DATA": [
      {
         "NAME": "NAYAN",
         "LOCATION": "CHENNAI"
      },
      {
         "NAME": "TARA",
         "LOCATION": "CHENNAI"
      }
   ]
}

案例2:

<root>
   <DATA>
    <NAME>NAYAN</NAME>
    <LOCATION>CHENNAI</LOCATION>
  </DATA>
 </root>

结果:

{
   "DATA": {
      "NAME": "NAYAN",
      "LOCATION": "CHENNAI"
   }
}

期待:

{
   "DATA":[
 {
      "NAME": "NAYAN",
      "LOCATION": "CHENNAI"
   }
]
}

这是我的 C# 代码:

static void Main(string[] args)
{
    string xml = @"<root>
      <DATA>
        <NAME>NAYAN</NAME>
        <LOCATION>CHENNAI</LOCATION>
      </DATA>
    </root>";

    XmlDocument doc = new XmlDocument();
    doc.LoadXml(xml);

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

    Console.WriteLine(json);
}
二书

在这里,我创建了一个简单的实用程序函数,DATA如果DATA包含对象或数组,可以获取您的令牌并将其解析为数组。

public class Utility
{
    public static string JsonParser(string json)
    {
        JToken jTokenMain = JToken.Parse(json);

        JToken jToken = jTokenMain["DATA"];

        List<object> list = new List<object>();

        if (jToken is JArray)
        {
            list = jToken.ToObject<List<object>>();
        }
        else if (jToken is JObject)
        {
            list.Add(jToken.ToObject<object>());
        }

        JToken data = JToken.FromObject(list);

        jTokenMain["DATA"] = data;

        return jTokenMain.ToString();
    }
}

您可以使用上述功能,如

XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);

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

string formattedJson = Utility.JsonParser(json);    

编辑:

在您的 xml 中<root>是第 0 级元素,<DATA>是第 1 级元素,它的名称可以是任何内容,并且您希望此元素在 json 中是 Array,无论是它的对象还是 xml 中的数组。

XDocument doc = XDocument.Parse(xml);
//XDocument doc = XDocument.Load(@"Path to your xml");

Dictionary<string, object> dict = doc.Root.Elements()
   .GroupBy(x => x.Name.LocalName, y => new
   {
       Name = y.Element("NAME").Value,
       Location = y.Element("LOCATION").Value
   })
   .ToDictionary(x => x.Key, y => (object)y.ToList());

string json = JsonConvert.SerializeObject(dict);

Console.WriteLine(json);

案例 1:(第一级元素名称是DATA

<root>
<DATA>
  <NAME>NAYAN</NAME>
  <LOCATION>CHENNAI</LOCATION>
</DATA>
</root>

输出:(带有键名的 Json 是DATA

在此处输入图片说明

情况 2:(第一级元素名称为SAMPLE

<root>
<SAMPLE>
  <NAME>NAYAN</NAME>
  <LOCATION>CHENNAI</LOCATION>
</SAMPLE>
</root>

输出:(带有键名的 Json 是SAMPLE

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在C#中将JSON数组转换为XML

如何在C#中将Json对象转换为数组

如何在C#中将Json数组转换为列表

在Node JS中将JSON对象转换为Excel文件时,如何在Excel文件中存储Javascript数组元素?

XML 元素中的连字符 (-) 在 Ruby 中将其转换为 JSON 时变为下划线 (_)

将JSON反序列化为C#时如何处理更改的元素名称

在 Swift 中将数组元素转换为合适的 json

如何在 pgsql 中将 json 转换为 json 数组

如何在元素内具有索引的javascript中将数组转换为json字符串

如何在C#中将json转换为json对象

在C#中将Soap XML转换为Json对象

在 Python 中将 SQL 数据转换为 JSON

如何在 C# (.net core) 中将我的对象数组转换为 JSON 对象

如何在 C# 中将 JSON.stringify($scope.obj) 转换为数组

如何在MYSQL中将表数据转换为JSon数组

如何在JavaScript中将表单转换为Json数组

如何在 api 中将 JSON 对象转换为 Typescript 数组

如何在Javascript中将JSON转换为数组

如何在Android中将HashMap转换为json数组?

如何在Snowflake中将JSON数组转换为单列表?

如何在scala中将列表转换为Json数组

如何在MySQL中将结果表转换为JSON数组

如何在节点js中将urlencoded数组转换为json

如何在javascript中将json转换为数组对象?

如何在Spark中将Json转换为数组

如何在React Native中将JSON对象转换为数组

如何在JS中将json转换为树数组?

如何在php中将json数据转换为数组?

如何在 JQuery 中将 JSON 转换为数组(从输出)?