Json反序列化列表与数据表(几种情况)

Json反序列化列表与数据表(几种情况),json,vb.net,sql-server-2008,datatable,deserialization,Json,Vb.net,Sql Server 2008,Datatable,Deserialization,我有以下json: { "Header": { "MCC": "415", "FO": "0", "REGID": "5" }, "Contacts": [ { "NAME": "jocelyne", "MO": "70123456" }, { "NAME": "eliane", "MO": "03123456" } ] } 我有两个客户机:一个客户机按此顺序给我这个json,第二个客户机按此顺序给我json中name之前的mo,但当我反序列化json时,我需

我有以下json:

{
"Header": {
"MCC": "415",
"FO": "0",
"REGID": "5"
 },
"Contacts": [
{
    "NAME": "jocelyne",
    "MO": "70123456"
},
{
    "NAME": "eliane",
    "MO": "03123456"
}
] }
我有两个客户机:一个客户机按此顺序给我这个json,第二个客户机按此顺序给我json中
name
之前的
mo
,但当我反序列化json时,我需要在datatable中始终保持相同的顺序

我需要知道哪种方法更好

1-反序列化列表中的json(按字母顺序获取标记),然后将列表转换为数据表

在这种情况下,我就是这么做的:

Public Class Dataa
Public MCC As Integer
Public FO As Integer
Public RegId As Integer
Public Contacts As Contacts()
End Class

<Serializable()> _
Public Class Contacts
Public name As String
Public mo As String
End Class

 Dim jss As New JavaScriptSerializer
    Dim oFareResults As Generic.List(Of Dataa) = jss.Deserialize(Of List(Of Dataa))(json)
    contactsDT = ConvertListToDataTable(oFareResults)

    contactsDT.Columns.Add("taken_mo", GetType(String))
    contactsDT.Columns.Add("reg_id", GetType(Integer))

        Private Shared Function ConvertListToDataTable(oFareResults As List(Of Dataa)) As DataTable
    ' New table.
    Dim dtTable As New DataTable()


    dtTable.Columns.Add("name", GetType(String))
    dtTable.Columns.Add("mo", GetType(String))

    For i As Integer = 0 To oFareResults.Item(0).Contacts.Length - 1
        dtTable.Rows.Add(oFareResults(0).Contacts(i).name, oFareResults(0).Contacts(i).mo)
    Next
    Return dtTable
End Function
公共类数据a
作为整数的公共MCC
作为整数的公共FO
公共注册表为整数
公共联系人作为联系人()
末级
_
公共类联系人
公共名称作为字符串
公共mo作为字符串
末级
Dim jss作为新的JavaScriptSerializer
作为Generic.List(Of Dataa)=jss.Deserialize(Of List(Of Dataa))(json)的结果的Dim
contactsDT=ConvertListToDataTable(共有结果)
contactsDT.Columns.Add(“taked_-mo”,GetType(String))
contactsDT.Columns.Add(“reg_id”,GetType(整数))
专用共享函数ConvertListToDataTable(作为列表的ReResults(作为Dataa的))作为DataTable
“新桌子。
Dim dtTable作为新数据表()
dtTable.Columns.Add(“名称”,GetType(字符串))
dtTable.Columns.Add(“mo”,GetType(String))
对于i,作为整数=0到0,返回结果项(0).Contacts.Length-1
dtTable.Rows.Add(搜索结果(0).联系人(i).姓名,搜索结果(0).联系人(i).mo)
下一个
返回数据表
端函数
2-选择2个案例,每个案例对应不同的客户机,然后在数据表中反序列化json

在这种情况下:

 Public Class Data
Public Header As Header
Public Contacts As DataTable
End Class

<System.Runtime.Serialization.DataContract()>
Public Class Header
<System.Runtime.Serialization.DataMember(Name:="MCC")>
Public MCC As Integer
<System.Runtime.Serialization.DataMember(Name:="FO")>
Public FO As Integer
<System.Runtime.Serialization.DataMember(Name:="REGID")>
Public RegId As Integer
End Class

    Dim data As New Data
    data = JsonConvert.DeserializeObject(Of Data)(json)
    mcc = data.Header.MCC
    FO = data.Header.FO
    regid = data.Header.RegId
    contactsDT = data.Contacts
公共类数据
作为报头的公共报头
公共联系人作为数据表
末级
公共类标题
作为整数的公共MCC
作为整数的公共FO
公共注册表为整数
末级
Dim数据作为新数据
data=JsonConvert.DeserializeObject(数据类型)(json)
mcc=data.Header.mcc
FO=data.Header.FO
regid=data.Header.regid
contactsDT=数据。联系人
这就是我必须将json反序列化到datatable中的方式,在本例中,我必须有两个函数为每个客户机反序列化一个(以保留我需要的顺序)

嗯,我需要知道的不是一般的解决方案,但考虑到我的json可能很长,我需要知道哪一个对服务器性能更好。
所以我需要每个案例的优点和缺点

您是如何反序列化的?请添加一个相关的代码示例。@AlexFilipovici更新了我的问题此问题应标记为,而不是。@AlexFilipovici我的问题是关于服务器的性能,无论代码是用vb还是c编写,在所有情况下都是相同的方法。。