JSON解析对象到字符串-保持元素的顺序



我有一个需要序列化为json的类:

[DataContract]
public class InfoRequest
{
    [DataMember]
    public string folder_id { get; set; }
    [DataMember]
    public string file_type_id { get; set; }
    [DataMember]
    public string prefix { get; set; }
    [DataMember] 
    public fileInfo[] files;
    [DataMember] 
    public termInfo[] terms;
}
[DataContract]
public class fileInfo
{
    [DataMember] 
    public string name { get; set; }
    [DataMember] 
    public string size { get; set; }
}
[DataContract]
public class termInfo
{
    [DataMember] 
    public string term_id { get; set; }
    [DataMember] 
    public string value { get; set; }
}

我已经尝试了ServiceStack。文本,NewtonSoft。Json和DataContractJsonSerializer。我从每个库中得到不同的结果,它们都没有保留datmembers的顺序。(ServiceStack甚至不序列化所有的数据成员。)将相同的InfoRequest对象传递给每个库,得到这些字符串:
JsonConvert:

{
   "files":[
      {
         "name":"Blip.txt",
         "size":"448"
      },
      {
         "name":"blip.jpg",
         "size":"71535"
      }
   ],
   "terms":[
      {
         "term_id":"1000",
         "value":"Copyright"
      },
      {
         "term_id":"1000",
         "value":"Copyright"
      }
   ],
   "folder_id":"11245",
   "file_type_id":"234",
   "prefix":"",
   "ServiceStack":{
      "folder_id":"11245",
      "file_type_id":"234",
      "prefix":""
   },
   "MS":{
      "file_type_id":"234",
      "files":[
         {
            "name":"Blip.txt",
            "size":"448"
         },
         {
            "name":"blip.jpg",
            "size":"71535"
         }
      ],
      "folder_id":"11245",
      "prefix":"",
      "terms":[
         {
            "term_id":"1000",
            "value":"Copyright"
         },
         {
            "term_id":"1000",
            "value":"Copyright"
         }
      ]
   }
}

我怀疑数据成员的顺序应该问题,但我从服务器得到一个错误,并认为这可能是问题。

注意:默认情况下,ServiceStack的JSON序列化器只序列化公共属性,如果你也想包含公共字段(例如,它也序列化'files'和'terms'),你需要包括:

ServiceStack.Text.JsConfig.IncludePublicFields = true;

datammembers会影响ServiceStack中的序列化,这会使所有字段都选择加入,如果你想退出,请使用IgnoreDataMember

相关内容

  • 没有找到相关文章

最新更新