我有这个字符串:
1=True&2=150+minutes&3=True&4=True&5=Continuing+to+smoke
我怎样才能将它变成这样的数组或对象:
[1] => True
[2] => "150 minutes"
etc?
我试过这个:
<HttpPost()>
Function GetQuizScore(ByVal data As String) As JsonResult
'Debug.Print(data)
Dim jss = New JavaScriptSerializer
Dim dict = jss.Deserialize(Of List(Of String))(data)
Debug.Print(String.Join(", ", dict))
Return Json(data)
End Function
但是,它给了我一个错误:
无效的JSON原语: 真和2 = 150 +分钟和3 =真和4 =真安培; 5 =继续+至+烟
感谢您的帮助。
答案 0 :(得分:3)
您拥有的字符串是 QueryString ,而不是JSON字符串。因此,您可以使用
将其转换为NameValueCollection。
示例:
Dim s = "1=True&2=150+minutes&3=True&4=True&5=Continuing+to+smoke"
Dim parsed = HttpUtility.ParseQueryString(s)
For Each key In parsed
Console.WriteLine(key & ": " & parsed(key))
Next
输出:
1: True
2: 150 minutes
3: True
4: True
5: Continuing to smoke
答案 1 :(得分:3)
首先,您的错误发生是因为您尝试将键/值对字符串解析为JSON对象(显然不是这样)。其次,你使用MVC,应该不需要任何手动序列化服务器端,让ASP.NET MVC模型绑定器为你做。为您的行动引入一个视图模型,例如
Public Class QuizScoreViewModel
Property Property1 As String
Property Property2 As String
...
End Class
然后将您的action参数更新为expect QuizScoreViewModel
,例如
<HttpPost()>
Function GetQuizScore(ByVal viewModel As QuizScoreViewModel) As JsonResult
Debug.Print(viewModel.Property1)
...
End Function