通过JSON
发送时,具有成员数据类型Dictionary之一的对象将被检索为null我使用以下架构创建了一个DTO
public class myclass
{
public string APIKey {get;set;}
public string APISecret {get;set;}
public string APIVersion {get;set;}
public Dictionary<string,string> Fields {get;set;}
}
我尝试使用以下JS
将JSON发送到我的API $.ajax({
type: "GET",
dataType: "jsonp",
url: $('#txtUrl').val(),
data: {APIKey:"test",APISecret:"test", APIVersion:"1.0",Fields:[{"Key":"JobID","Value":"2290277"},{"Key":"CountryID","Value":"1"}]},
success: function (data) {
// Now the two will work
$.each(data, function(key, value) {
if (key == 'Fields')
{
$.each(value, function(key2, value2) {
$('#result').append('<br />' + key2 + ' ' + value2);
});
}
else
$('#result').append('<br />' + key + ' ' + value);
});
}
});
答案 0 :(得分:3)
你的json应该像这样格式化。不要使用Value和Keys属性名称。还要将您的属性名称放在引号中。
{"APIKey":"test","APISecret":"test","APIVersion":"1.0",
"Fields":{"JobID":"2290277","CountryID":"1"}}
每当我遇到这些问题时,我都会运行一些简单的代码来查看ServiceStack Serializer如何预期格式化json:
var m = new myclass();
m.APIKey = "test";
m.APISecret = "test";
m.APIVersion = "1.0";
m.Fields =new Dictionary<string, string>();
m.Fields.Add("JobID", "2290277");
m.Fields.Add("CountryID", "1");
string json = m.ToJson();
然后将它与你自己的json进行比较。
答案 1 :(得分:0)
需要修改我的jScript
{ “APIKey”: “测试”, “APISecret”: “测试”, “APIVersion”: “1.0”, “字段”:<强> “强> { '作业ID': '2290277', 'CountryID': '1'}的”强>}