0

json をサーバーに渡したいのですが、以下は json 形式です。

[{"StaffID":"S01","StaffRank":"Manager"},{"StaffID":"S02","StaffRank":"Waiter"}]

次のコードを試してjson配列を取得した後:

  Dim request As String = New StreamReader(data).ReadToEnd
    response = AddStaff(JsonConvert.DeserializeObject(Of tbl_Staff)(request))
    Return JsonConvert.SerializeObject(response)

次の新しいエラーが表示されます。

「現在の JSON 配列 (例: [1,2,3]) を型 'tbl_Staff' に逆シリアル化できません。この型では正しく逆シリアル化するために JSON オブジェクト (例:{"name":"value"}) が必要です。このエラーを修正するには、次のいずれかを行います。 JSON を JSON オブジェクト (例: {"name":"value"}) に変更するか、逆シリアル化された型を配列、または JSON から逆シリアル化できる List などのコレクション インターフェイスを実装する型 (ICollection、IList など) に変更します。配列。JsonArrayAttribute を型に追加して、強制的に JSON 配列から逆シリアル化することもできます。"

何が問題ですか?ありがとう

4

2 に答える 2

1

答えが見つかりました。コードを List に変更するだけです。その後、完璧に動作します。

Dim request As String = New StreamReader(data).ReadToEnd
response = AddStaff(JsonConvert.DeserializeObject(Of List(Of tbl_Staff))(request))
Return JsonConvert.SerializeObject(response)
于 2013-05-27T09:31:01.230 に答える
1

問題は、現在の JSON 配列 ([1,2,3] など) を 'tbl_Staff' 型に逆シリアル化できないことです。これは、型が正しく逆シリアル化するために JSON オブジェクト (例:{"name":"value"}) を必要とするためです。このエラーを修正するには、JSON を JSON オブジェクト (例: {"name":"value"}) に変更するか、逆シリアル化された型を配列または List のようなコレクション インターフェイス (ICollection、IList など) を実装する型に変更します。 JSON 配列から逆シリアル化されます。JsonArrayAttribute を型に追加して、強制的に JSON 配列から逆シリアル化することもできます。

エラーメッセージをどれだけ詳しく書いても、人々はそれを読まないだけのようです:-\

于 2013-05-27T05:39:39.737 に答える