2

助けてください!デシリアライズ時にこのエラーが発生します:

タイプ 'System.String' のオブジェクトをタイプ 'System.Collections.Generic.List' に変換できません

クライアントからの JSON 文字列:

"\"[{\\"id\\":\\"18_0_2_0\\",\\"ans\\":\\" * \\"},{\\"の代わりにフリーテキストを入力できますid\\":\\"23_1_3_1\\",\\"ans\\":\\"更新ボタン\\"},{\\"id\\":\\"11_2_1_2\\",\ \"ans\\":\\"False\\"}]\""

編集:エスケープされていません(コメントを参照):

[{"id":"18_0_2_0","ans":" * "}の代わりに自由なテキストを入力できます,{"id":"11_2_1_2","ans":"False"}]

JavaScriptSerializer serializer = new JavaScriptSerializer();
List<RawAnswer> ListAnswers = serializer.Deserialize<List<RawAnswer>>(str);
 [Serializable]
public class RawAnswer
{       
    public string QuestionID { get; set; }
    public string Answer { get; set; }

    public RawAnswer() { }

}

public class AnswerList
{
    public List<RawAnswer> RawAnswer { get; set; }
}
4

2 に答える 2

9

元のjson文字列(aKzenTの編集前)は二重にエスケープさvar str2 = Regex.Unescape(str);れ、実際の文字列を取得するために使用しました。

public class RawAnswer
{
     public string id { get; set; }
     public string ans { get; set; }

}

そして、AnswerList

これでコードが機能するようになりました

JavaScriptSerializer serializer = new JavaScriptSerializer();
List<RawAnswer> ListAnswers = serializer.Deserialize<List<RawAnswer>>(str);
于 2012-10-02T21:19:29.670 に答える
2

クライアントから受け取る JSON 文字列自体は、探している実際の JSON 文字列を含む文字列です。正しい文字列を送信するようにクライアントを修正するか、最初にこの結果を に逆シリアル化しString次にそれを に逆シリアル化します。List<RawAnswer>

于 2012-10-02T21:13:24.990 に答える