私は、私は以下のようにそれJSON文字列フォーマット変換サーバから返される辞書があります。JSON-AJAX
public static class Extensions
{
public static string ToJson<T>(this T obj)
{
MemoryStream stream = new MemoryStream();
try {
DataContractJsonSerializer jsSerializer = new DataContractJsonSerializer(typeof(T));
jsSerializer.WriteObject(stream, obj);
return Encoding.UTF8.GetString(stream.ToArray());
}
finally
{
stream.Close();
stream.Dispose();
}
}
public static T FromJson<T>(this string input)
{
MemoryStream stream = new MemoryStream();
try {
DataContractJsonSerializer jsSerializer = new DataContractJsonSerializer(typeof(T));
stream = new MemoryStream(Encoding.UTF8.GetBytes(input));
T obj = (T)jsSerializer.ReadObject(stream); return obj;
}
finally
{
stream.Close();
stream.Dispose();
}
}
}
[WebMethod]
public string callme()
{
Dictionary<int, string> myObjects = new Dictionary<int, string>();
myObjects.Add(1, "This");
myObjects.Add(2, "is");
myObjects.Add(3, "cool");
string json = myObjects.ToJson();
return json;
}
がその結果です:
{"d":"[{\"Key\":1,\"Value\":\"This\"},{\"Key\":2,\"Value\":\"is\"},{\"Key\":3,\"Value\":\"cool\"}]"}
方法を私はjqueryでそれを解析しますか?私はこれをしようとしてm個が、戻ってくる応答は完全にJSONに解析されないよう
$.ajax({
type: "POST",
url: "web.asmx/callme",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg){
$.each(msg.d, function (i) {
$("#data2").append(i.Key + " " + i.Value + "<br/>");
});
}
});
その後、クライアントサイトで単にmsg.dを使用します。 JSOn文字列から自動的に逆シリアル化されます。私のjsonではどうですか? –
"full working sample"のサンプルを見てください。辞書のWebメソッドから返されたデータを変更すると、レスポンスの '.d'プロパティをデシリアライズせずにクライアント側で直接使用できることがわかります。 – JotaBe
hmm素敵なありがとう、私の質問は、2つの部分は、ソリューションの上で、あなたとエリーから来ています;) –