相关疑难解决方法(0)

有时数组和有时反对时反序列化JSON

我在使用JSON.NET库对从Facebook返回的数据进行反序列化时遇到了一些麻烦.

从简单的墙贴文件返回的JSON看起来像:

{
    "attachment":{"description":""},
    "permalink":"http://www.facebook.com/permalink.php?story_fbid=123456789"
}
Run Code Online (Sandbox Code Playgroud)

为照片返回的JSON如下所示:

"attachment":{
        "media":[
            {
                "href":"http://www.facebook.com/photo.php?fbid=12345",
                "alt":"",
                "type":"photo",
                "src":"http://photos-b.ak.fbcdn.net/hphotos-ak-ash1/12345_s.jpg",
                "photo":{"aid":"1234","pid":"1234","fbid":"1234","owner":"1234","index":"12","width":"720","height":"482"}}
        ],
Run Code Online (Sandbox Code Playgroud)

一切都很好,我没有问题.我现在遇到一个来自移动客户端的简单墙帖,其中包含以下JSON,现在反序列化失败,只有一个帖子:

"attachment":
    {
        "media":{},
        "name":"",
        "caption":"",
        "description":"",
        "properties":{},
        "icon":"http://www.facebook.com/images/icons/mobile_app.gif",
        "fb_object_type":""
    },
"permalink":"http://www.facebook.com/1234"
Run Code Online (Sandbox Code Playgroud)

这是我反序列化的类:

public class FacebookAttachment
    {
        public string Name { get; set; }
        public string Description { get; set; }
        public string Href { get; set; }
        public FacebookPostType Fb_Object_Type { get; set; }
        public string Fb_Object_Id { get; set; }

        [JsonConverter(typeof(FacebookMediaJsonConverter))]
        public List<FacebookMedia> { get; set; }

        public string Permalink { get; …
Run Code Online (Sandbox Code Playgroud)

c# json json.net facebook-c#-sdk json-deserialization

47
推荐指数
4
解决办法
3万
查看次数

如何从相当复杂的Json Response中在C#Asp.Net中创建Dto

我已经调用了Api并使用RestSharp接收了此响应.我无法控制Json响应的结构.

{
  "response": {
    "result": {
      "Leads": {
        "row": [
          {
            "no": "1",
            "FL": [
              {
                "val": "LEADID",
                "content": "101"
              },
              {
                "val": "Company",
                "content": "Test 1"
              }
            ]
          },
          {
            "no": "2",
            "FL": [
              {
                "val": "LEADID",
                "content": "102"
              },
              {
                "val": "Company",
                "content": "Test 2"
              }
            ]
          }
        ]
      }
    },
    "uri": "/crm/private/json/Leads/getRecords"
  }
}
Run Code Online (Sandbox Code Playgroud)

我想在理想情况下从Json中提取一个Leads列表作为Dto,而不进行可怕的解析等.

所以例如我会创建一个Dto类:

public class LeadDto {
  public string LeadId;
  public string Company;
}
Run Code Online (Sandbox Code Playgroud)

这些潜在客户可以包含在列表或其他内容中.

我已经阅读了https://github.com/restsharp/RestSharp/wiki/Deserialization多年但没有到达任何地方.

任何人都能用实例指出我正确的方向吗?

c# asp.net json

2
推荐指数
1
解决办法
1457
查看次数