0

これは、ストリームから取得し、文字列に変換した JSON です。

"{\"data\":[{\"thread_id\":\"1111155552222\",\"recipients\":[123123,456456],\"message_count\":2100},{\"thread_id\":\"1111155553333\",\"recipients\":[123124,456457],\"message_count\":4851},{\"thread_id\":\"1111155554444\",\"recipients\":[123125,456458],\"message_count\":435}]}"

public class DataContainer
{
    List<data> data { get; set; }
}

public class data
{
    public string thread_id { get; set; }
    public long[] recipients { get; set; }
    public int message_count { get; set; }
}

JavaScriptSerializer ser = new JavaScriptSerializer();

DataContainer data = ser.Deserialize<DataContainer>(json);

データで null を取得しています。逆シリアル化されていないようです。jsonのアマチュア。もうこれで頭が痛い。

ありがとう!


JSON 文字列の取得

WebResponse response = request.GetResponse();
Stream stream = response.GetResponseStream();
Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
StreamReader reader = new StreamReader(stream, encode);
string json = reader.ReadToEnd();
4

1 に答える 1

0

ストリームから取得して文字列に変換した JSON」が 2 回シリアル化されたようです。

ASP.NET は、結果がオブジェクトまたはオブジェクトのコレクションであっても、自動的に JSON によってサービス メソッドの応答をシリアル化します。

シリアル化/逆シリアル化せずに直接使用できるはずです。

何かのようなもの:

//Assuming GetJson() returns a JSON string, which you can use directly 
DataContainer data = GetJson();

これを確認してください:http://encosia.com/asp-net-web-services-mistake-manual-json-serialization/

また、これ:JSONからの読み取り、データが表示されない

于 2012-09-13T15:42:50.117 に答える