4

我正在对新的 ASP.NET Web API 进行一些简单的测试,从我的操作方法返回可序列化的类或集合时遇到以下问题。

我的课看起来像这样:

<Serializable()>
Public Class Test

    <XmlElement(ElementName:="Name")>
    Public Property Name() As String = String.Empty

    <XmlElement(ElementName:="ID")>
    Public Property ID() As String = String.Empty

    <XmlElement(ElementName:="ClassID")>
    Public Property ClassID() As String = String.Empty

End Class

我检索单个测试的测试操作方法如下所示:

Public Function GetTest(ByVal id As String) As Test

    Dim newTest As Test = new Test() With {.ID = id, .Name = "My Test", .ClassID = System.Guid.NewGuid().ToString()}

    return newTest

End Function

当我在浏览器或 Fiddler 中以 XML 或 JSON 的形式查看结果时,返回的 Test 类的属性名称前面有 unsercores,如下所示:

<Test>
    <_ClassID>88bb191d-414c-45a4-8213-37f96c41a12d</_ClassID>
    <_ID>ed853792-b7eb-4378-830b-1db611e12ec9</_ID>
    <_Name>Another Test</_Name>
</Test>

如何摆脱元素/属性名称上不需要的下划线?

谢谢!

4

3 回答 3

8

<Serializable()>在 Class 之前删除 ,则结果将不包含“_”。

于 2013-01-09T13:14:14.910 回答
6

您可以使用DataMember属性:

Public Class Test
    <DataMember(Name:="Name")>
    Public Property Name() As String = String.Empty

    <DataMember(Name:="ID")>
    Public Property ID() As String = String.Empty

    <DataMember(Name:="ClassID")>
    Public Property ClassID() As String = String.Empty
End Class

经过进一步调查,似乎如果您在 C# 中执行相同的操作,则不会添加下划线,也无需使用 DataMember。它只是工作。所以我想这应该是一些 VB.NET 的东西。

于 2012-07-12T17:14:10.990 回答
0

我对 json 中的前置下划线有类似的体验,并且我没有用 Serializable 属性标记的类。在我的情况下,修复是:

Imports Newtonsoft.Json

<JsonObject>
Public Class MyObject
...
于 2018-05-01T15:06:48.027 回答