序列化列表餘米試圖手藝我從一個WebMethod在JSON的形式從名單響應結合,處理和VB.NET
首先列表屬性
Public Class DataRes
Public Property RecID As Integer
Public Property filenum As Integer
Public Property name As String
Public Property msgcode As String
Public Property msgtitle As String
Public Property msg As String
Public Property PartnerData As List(Of PartnerData)
End Class
我的第二個列表屬性
Public Class PartnerData
Public Property RecID As Integer
Public Property PrtStatus As Integer
Public Property ptfilenum As Integer
Public Property prfilenum As Integer
End Class
我填寫那些清單,分別如下面的代碼
Dim Ptdata As New List(Of DataRes)()
Using sdr As SqlDataReader = cmd.ExecuteReader()
While sdr.Read()
Ptdata.Add(New DataRes() With { _
.RecID = sdr("RecID").ToString(), _
.filenum = sdr("filenum").ToString(), _
.name = sdr("name").ToString() _
})
End While
End Using
return JsonConvert.SerializeObject(Ptdata)
Dim Prtdata As New List(Of PartnerData)()
Using sdr As SqlDataReader = cmd.ExecuteReader()
While sdr.Read()
Prtdata.Add(New PartnerData() With { _
.prfilenum = sdr("PrtFilenum").ToString(), _
.PrtStatus = sdr("PrtStatus").ToString(), _
.ptfilenum = sdr("PtFilenum").ToString(), _
.RecID = sdr("RecID").ToString() _
})
End While
End Using
return JsonConvert.SerializeObject(PartnerData)
我測試的兩種列表和我米從每個
我米試圖將它們結合起來得到所期望的結果,我試圖下面,
- 昏暗合併= Ptdata .Concat(Prtdata).ToList() 我得到這個錯誤,
無法投型的對象「system.collections.generic.list`1
- 昏暗合併= Ptdata.AddRange(Prtdata).ToList() 和我得到這個錯誤,
表達式不會產生一個值。
我的目標JSON會是這樣的
{
"PtRegData": {
"RecID": "1277",
"filenum": "15090248",
"name": "Ahmad",
"PartnerData": [{
"RecID": 2383,
"PrtStatus": 1
}, {
"RecID": 3387,
"PrtStatus": 0
}, {
"RecID": 3388,
"PrtStatus": 0
}]
}}
另外,我怎麼可以添加一個名稱列表之前序列化呢?
編輯
Using sdr As SqlDataReader = cmd.ExecuteReader()
While sdr.Read()
Ptdata.Add(New DataRes() With { _
.RecID = sdr("RecID").ToString(), _
.filenum = sdr("filenum").ToString(), _
.name = sdr("name").ToString(), _
.msgcode = sdr("msgcode").ToString(), _
.msgtitle = sdr("msgtitle").ToString(), _
.msg = sdr("msg").ToString() _
})
End While
End Using
Using sdr As SqlDataReader = cmd.ExecuteReader()
While sdr.Read()
Prtdata.Add(New PartnerData() With { _
.prfilenum = sdr("PrtFilenum").ToString(), _
.PrtStatus = sdr("PrtStatus").ToString(), _
.ptfilenum = sdr("PtFilenum").ToString(), _
.RecID = sdr("RecID").ToString() _
})
End While
For Each p In Ptdata
p.PartnerData.AddRange(Prtdata.Where(Function(c) c.ptfilenum = p.filenum))
Next
End Using
您將需要一個項目類型有一個屬性,它是其他項目類型的列表,那麼你就需要填充該集合爲每個項目從其他列表。你不能只將這兩個列表端到端地粘在一起,並期望它神奇地創建這種關係。 – jmcilhinney
@jmcilhinney,謝謝你的迴應,我更新了類,我仍然得到相同的錯誤,,,無法投出類型的對象'system.collections.generic.list'1 – JSON
你寫代碼添加'PartnerData'對象與它們相關的'DataRes'對象的'PartnerData'集合? – jmcilhinney