iT邦幫忙

1

請教json格式轉object問題(vb.net)

目前開發工具為.net,由於對方json電文規格中開頭為數字
範例如下:
resJson="{"status":"0000","2status":"0001"}"
請問該如何去接收?是否只能用字串拆解的方式,在幫他重新定義一個物件的名稱,當字串如果遇2status,將內容寫到某個自行定義好的變數中?
煩請各位高手指教,謝謝

目前若無開頭為數字的變數名稱的話,使用接收方式是先定義一個class來接收該json格式
Dim resJson As String = .Value()
Dim resInfo = New JavaScriptSerializer().Deserialize(Of resBody)(resJson)

Class resBody
Dim test As New isBody

Structure isBody
        Dim status As String '狀態'
    End Structure

    Property status() As String
        Get
            Return test.status
        End Get
        Set(ByVal value As String)
            test.status = value
        End Set
    End Property

End Class

1 個回答

2
fysh711426
iT邦研究生 4 級 ‧ 2018-03-14 19:55:16
最佳解答

我有想到一個折衷的辦法提供給大大,
不過要用 Nuget 安裝 Newtonsoft.Json 這個套件,
接著將接收 JSON 的 Class,開頭為數字的欄位前面加底線,
然後透過 JsonProperty Attribute 對應原始的欄位名稱
https://ithelp.ithome.com.tw/upload/images/20180315/20106865pi9nkV8diL.jpg

程式碼:

Private Sub Button_Click(sender As Object, e As RoutedEventArgs)
    Dim json As String = "{""status"":""0000"",""2status"":""0001""}"
    Dim obj = JsonConvert.DeserializeObject(Of Body)(json)
End Sub

Public Class Body
    Public Property status As String
    <JsonProperty("2status")>
    Public Property _2status As String
End Class
untitled iT邦新手 5 級 ‧ 2018-03-15 11:44:02 檢舉

已有成功導向新的變數名稱,感謝協助!!

untitled iT邦新手 5 級 ‧ 2018-03-15 11:45:59 檢舉

由於開發工具為vs2008 ,將安裝nuGet方式附在下方網址提供參考
https://www.hanselman.com/blog/NuGetSupportForVisualStudio2008.aspx

fysh711426 iT邦研究生 4 級 ‧ 2018-03-15 12:50:31 檢舉

很高興幫助到您
/images/emoticon/emoticon12.gif

我要發表回答

立即登入回答