3

私はこの文字列を持っています:

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 プリミティブ: True&2=150+minutes&3=True&4=True&5=Continuing+to+smoke.

ご協力いただきありがとうございます。

4

2 に答える 2

3

まず、キーと値のペアの文字列を JSON オブジェクトとして解析しようとしたためにエラーが発生しました (明らかにそうではありません)。第二に、MVC を使用すると、サーバー側で手動でシリアル化する必要はありません。ASP.NET MVC モデル バインダーに任せてください。アクションのビュー モデルを導入します。

Public Class QuizScoreViewModel

    Property Property1 As String
    Property Property2 As String
    ...

End Class

次に、アクションパラメータを更新して期待するようにしますQuizScoreViewModel

<HttpPost()>
Function GetQuizScore(ByVal viewModel As QuizScoreViewModel) As JsonResult

    Debug.Print(viewModel.Property1)
    ...

End Function
于 2012-10-08T12:50:22.893 に答える
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
于 2012-10-08T12:36:44.573 に答える