ServiceStack Dictionary DTO Dictionary <string,string =“”>数据类型反序列化</string,>

时间:2013-03-13 04:54:30

标签: servicestack

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

                       });







        }

    });

2 个答案:

答案 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'}的}