1.狀況:A程式呼叫外部Console程式,並傳入JOSN格式給Console程式,如果此時JSON格式中有雙引號("),
Console程式接受後雙引號會消失,因此造成JOSN無法反序列化。
解決方式:再傳入參數時,先將雙引號前加入反斜線\,用來脫逸雙引號。
例如:"你好嗎?" –>\"你好嗎?\"
1.狀況:A程式呼叫外部Console程式,並傳入JOSN格式給Console程式,如果此時JSON格式中有雙引號("),
Console程式接受後雙引號會消失,因此造成JOSN無法反序列化。
解決方式:再傳入參數時,先將雙引號前加入反斜線\,用來脫逸雙引號。
例如:"你好嗎?" –>\"你好嗎?\"
1.在專案中加入參考System.Runtime.Serialization命名空間
2.在類別中加入Imports System.Runtime.Serialization.Json
'''
''' 物件序列化成Json格式
'''
'''物件型別
''' 物件
'''Json格式
Public Shared Function JsonSerialize(Of T)(ByVal o As T) As String
Return JsonSerialize(Of T)(o, Encoding.Default)
End Function
'''
''' 物件序列化成Json格式
'''
'''物件型別
''' 物件
''' 編碼
'''Json格式
Public Shared Function JsonSerialize(Of T)(ByVal o As T, ByVal encoding As Encoding) As String
Using ms As New MemoryStream
Dim json As New DataContractJsonSerializer(GetType(T))
json.WriteObject(ms, o)
Using sr As New StreamReader(ms, encoding)
ms.Position = 0
Return sr.ReadToEnd()
End Using
End Using
End Function
'''
''' Json格式反序列化成物件
'''
'''物件型別
''' Json格式
'''物件
Public Shared Function JsonDeserialize(Of T)(ByVal s As String) As T
Return JsonDeserialize(Of T)(s, Encoding.Default)
End Function
'''
''' Json格式反序列化成物件
'''
'''物件型別
''' Json格式
''' 編碼
'''物件
Public Shared Function JsonDeserialize(Of T)(ByVal s As String, ByVal encoding As Encoding) As T
Using ms As New MemoryStream(encoding.GetBytes(s))
Dim json As New DataContractJsonSerializer(GetType(T))
ms.Position = 0
Return json.ReadObject(ms)
End Using
End Function
Function Index() As ActionResult
Dim dt As New DataTable
dt.Columns.Add("Name")
dt.Columns.Add("Age")
Dim dr As DataRow
dr = dt.NewRow()
dr("Name") = "Aaron"
dr("Age") = 19
dt.Rows.Add(dr)
dr = dt.NewRow()
dr("Name") = "Justin"
dr("Age") = 19
dt.Rows.Add(dr)
Return View(dt)
End Function
View
@Code
ViewData("Title") = "MyTest"
Layout = "~/Views/Shared/_Layout.vbhtml"
Dim dt As Data.DataTable = Model
End Code
<table>
<tr>
@For Each row As System.Data.DataRow In dt.Rows
@<td>
<th>@row(0)</th>
</td>
Next
</tr>
</table>