【问题标题】:JSON/XML Web API 2 - IssueJSON/XML Web API 2 - 问题
【发布时间】:2015-02-20 16:30:46
【问题描述】:

我正在开发一个需要接受 json 或 xml 数据的 Web API 2 服务。在 XML 方面,一切都很好,在 JSON 方面,只要有对象数组,该节点的结果就是“无”。这是一个例子:

XML:

<AutoShow>
    <Title>List of Cars</Title>
    <Cars>
        <Car>
            <Brand>Nissan</Brand>
            <Model>Sentra</Model>
        </Car>
        <Car>
            <Brand>Mazda</Brand>
            <Model>RX-7</Model>
        </Car>
    </Cars>
</AutoShow>

JSON:

{
    "Title": "List of Cars",
    "Cars": {
      "Car": [
        {
          "Brand": "Nissan",
          "Model": "Sentra"
        },
        {
          "Brand": "Mazda",
          "Model": "RX-7"
        }
      ]
    }
}

型号:

Public Class AutoShow
    Property Title As String = ""
    Property Cars As List(Of Car)

    Public Class Car
        Property Brand As String = ""
        Property Model As String = ""
    End Class
End Class

控制器有:

Public Function PostValue(<FromBody()> ByVal Value As AutoShow)

'Value contains the received data

End Function

当发送 XML 时,一切都很棒 Title 有“汽车列表”和 Value.Cars 有 Car 的对象,Brand 和 Model 都有值。

发送 JSON 时 Value.Title 有“汽车列表”但 Value.Cars 是“无”

我尝试创建一个如下所示的模型:

Partial Public Class AutoShow
    Public Title As String
    <System.Runtime.Serialization.DataMemberAttribute()> _
    Public Cars As Cars
End Class

<System.Runtime.Serialization.DataContractAttribute()> _
Partial Public Class Cars
    <System.Runtime.Serialization.DataMemberAttribute()> _
    Public Car() As Car
End Class

<System.Runtime.Serialization.DataContractAttribute()> _
Partial Public Class Car
    <System.Runtime.Serialization.DataMemberAttribute()> _
    Public Brand As String

    <System.Runtime.Serialization.DataMemberAttribute()> _
    Public Model As String
End Class

当我使用这个模型时,它基本上扭转了这个问题,而 JSON 有效,但 XML Value.Cars 是“无”

如果我是 Web API 2 的新手,我将不胜感激任何帮助,并且一直在搜索 google 以了解如何解决此问题。

谢谢。

【问题讨论】:

    标签: asp.net-web-api2


    【解决方案1】:

    我发现了问题,在使用其中一个在线 XML 到 JSON 转换器生成 JSON 时,正如我在上面所说的那样。然而,为了让它工作,JSON 实际上需要被格式化如下:

    {
        "Title": "List of Cars",
        "Cars": [
            {
              "Brand": "Nissan",
              "Model": "Sentra"
            },
            {
              "Brand": "Mazda",
              "Model": "RX-7"
            }
          ]
    }
    

    请注意缺少的“汽车”元素。把我所做的所有时间都花在了这样的事情上,哎呀!

    【讨论】:

      猜你喜欢
      • 2016-06-22
      • 1970-01-01
      • 2018-07-12
      • 2012-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-11
      • 2019-04-30
      相关资源
      最近更新 更多