2

通过 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);

                       });







        }

    });
4

2 回答 2

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 进行比较。

于 2013-03-13T13:51:27.670 回答
0

需要修改我的 jScript

{"APIKey":"test","APISecret":"test","APIVersion":"1.0", "Fields": " {'JobID':'2290277','CountryID':'1'} " }

于 2013-03-14T01:48:34.830 回答