c# - 只有一个对象时将 XML 转换为 Json 数组

标签 c# .net xml json json.net

我目前正在使用 Newtonsoft 将一些 xml 转换为 json 以从 RestExtension 返回。

我的xml是

的形式
<Items>
  <Item>
    <Name>name</Name>
    <Detail>detail</Detail>    
  </Item>
  <Item>
    <Name>name</Name>
    <Detail>detail</Detail>    
  </Item>
</Items>

我使用

将其转换为 json
JsonConvert.SerializeXmlNode(xmldocument);

如果有多个项目,这会很好地工作。

我明白了 - json 中的项目数组(这是我需要的):

{"Items":{"Item":[{"Name":"name","Detail":"detail"},{"Name":"name","Detail":"detail"}]}}

但是当只有一个时,它会像这样转换(不是数组),这是可以理解的:

 {"Items":{"Item":{"Name":"name","Detail":"detail"}}}

正在阅读本文的我的应用开发人员需要 json 返回一组项目,无论是否有一个或多个。

有没有办法让它认为它是一个数组,或者有人可以建议另一种方法吗?

最佳答案

阅读此 documentation about Serialize Xml Node

你可以用这种方式强制 JSON 数组

var xml = @"<Items xmlns:json='http://james.newtonking.com/projects/json' >
             <Item json:Array='true'>
                <Name>name</Name>
                 <Detail>detail</Detail>    
            </Item>
            </Items>";

DEMO

关于c# - 只有一个对象时将 XML 转换为 Json 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26612835/

相关文章:

C# LINQ GroupJoin 跳过项目

c# - 为什么 enum.ToString box/callvirt,而不是推送地址和调用?还有其他特殊情况吗?

.net - F# 代码不够通用(使用静态成员约束)

xml - XSLT:是否可以盲目地传递大多数元素但转换特定元素?

JAVA - 如何使用 StAX 基于子节点从 xml 中删除父节点

java - 如何使用 JDBC Java 与 .xml 文件建立数据库连接

c# - Linq 表达式无法翻译错误 Entity Framework Core 3

c# - 透明 UWP 窗口 10

c# - 为什么在 C# 和 PowerShell 中使用完全相同的代码加密 HMAC-SHA1 会显示不同的结果?

.net - 在事件目录中搜索组,如 SQL LIKE 语句