作为标题,
当我使用fiddler测试页面时 -
http://localhost:59583/JSONtest.asmx/Test Content-Type:application / json;字符集= UTF-8
我的请求正文是
{"header":{"sig":"abcdefg","timestamp":"2016-03-25T04:25:09.8395853Z"}}
它将回复此错误消息: 没有为\ u0027System的类型定义无参数构造函数.String \ u0027
但是如果我把JSON格式用反斜杠:
{"header":"{\"sig\":\"abcdefg\",\"timestamp\":\"2016-03-25T04:25:09.8395853Z\"}"}
响应将显示我想要的结果是正确的。
如何在不使用反斜杠JSON格式的情况下插入?
这是我的asmx代码。
[WebMethod]
[ScriptMethod(UseHttpGet = false, ResponseFormat = ResponseFormat.Json)]
public string Test(string header)
{
return header;
}
答案 0 :(得分:0)
这是因为您的第一个代码段中的"header"
是一个包含属性的类,而不是代码中的string
。在我看来,错误信息令人困惑。
第二个代码段只有一个string
作为"header"
的值,所以没关系。如果你真的希望"header"
成为一个对象,你必须为它创建一个单独的类才能使它正确序列化。
答案 1 :(得分:0)
您可以将头对象及其值包装在JSON.stringify()
中var myHeader = {"header":JSON.stringify(headerValue)};
var myParams = JSON.stringify(myHeader);
然后你可以将 myParams 变量作为数据参数发送到ajax请求中
$.ajax('url',data:myParams .....