Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Google Play开发者Api和JsonConvert.DeserializeObject_C#_Json_Json.net_Deserialization_Google Play Developer Api - Fatal编程技术网

C# Google Play开发者Api和JsonConvert.DeserializeObject

C# Google Play开发者Api和JsonConvert.DeserializeObject,c#,json,json.net,deserialization,google-play-developer-api,C#,Json,Json.net,Deserialization,Google Play Developer Api,我正在尝试反序列化AchieventConfiguration:从这里列出REST响应 问题是这一行只填充顶层对象,列表仍然为空。不会抛出任何错误消息,因此很难跟踪正在发生的情况。我使用一个网站来生成json结构化类,然后删除了不必要的重复项 响应如下所示,我删除了achievementConfiguration资源,因为它非常长,但可以在这里找到 我创建了一系列类,从AchievementConfigurationListResponse类开始镜像数据 public class Achieve

我正在尝试反序列化AchieventConfiguration:从这里列出REST响应

问题是这一行只填充顶层对象,列表仍然为空。不会抛出任何错误消息,因此很难跟踪正在发生的情况。我使用一个网站来生成json结构化类,然后删除了不必要的重复项

响应如下所示,我删除了achievementConfiguration资源,因为它非常长,但可以在这里找到

我创建了一系列类,从AchievementConfigurationListResponse类开始镜像数据

public class AchievementConfigurationListResponse
    {
        public string kind = "gamesConfiguration#achievementConfigurationListResponse";
        public string nextPageToken = "";

        List<AchievementConfigurationResource> items = new List<AchievementConfigurationResource>();
    }
这些嵌套对象属于此类型的AchieventConfiguration详细信息

public class AchievementConfigurationDetail
    {
        public string kind = "gamesConfiguration#achievementConfigurationDetail";
        public LocalizedStringBundle name = new LocalizedStringBundle();
        public LocalizedStringBundle description = new LocalizedStringBundle();
        public int pointValue = 5;
        public string iconUrl = "";
        public int sortRank = 1;
    }
其中包含多个LocalizedStringBundle

public class LocalizedStringBundle
    {
        public string kind = "gamesConfiguration#localizedStringBundle";
        public List<Translation> translations = new List<Translation>();

        public class Translation
        {
            public string kind = "gamesConfiguration#localizedString";
            public string locale = "en-US";
            public string value = "";
        }
    }

默认情况下,Json.NET不会序列化私有成员。因此,您需要将
实现配置列表响应设置为公共项:

public List<AchievementConfigurationResource> items = new List<AchievementConfigurationResource>();
public class LocalizedStringBundle
    {
        public string kind = "gamesConfiguration#localizedStringBundle";
        public List<Translation> translations = new List<Translation>();

        public class Translation
        {
            public string kind = "gamesConfiguration#localizedString";
            public string locale = "en-US";
            public string value = "";
        }
    }
   AchievementConfigurationListResponse res = JsonConvert.DeserializeObject<AchievementConfigurationListResponse>(content);
{
 "kind": "gamesConfiguration#achievementConfigurationListResponse",
 "items": [
  {
   "kind": "gamesConfiguration#achievementConfiguration",
   "token": "Unique Token",
   "id": "Unique ID",
   "achievementType": "STANDARD",
   "initialState": "REVEALED",
   "draft": {
    "kind": "gamesConfiguration#achievementConfigurationDetail",
    "name": {
     "kind": "gamesConfiguration#localizedStringBundle",
     "translations": [
      {
       "kind": "gamesConfiguration#localizedString",
       "locale": "en-US",
       "value": "Name"
      }
     ]
    },
    "description": {
     "kind": "gamesConfiguration#localizedStringBundle",
     "translations": [
      {
       "kind": "gamesConfiguration#localizedString",
       "locale": "en-US",
       "value": "Description"
      }
     ]
    },
    "pointValue": 5,
    "iconUrl": "Icon url",
    "sortRank": 1
   },
   "published": {
    "kind": "gamesConfiguration#achievementConfigurationDetail",
    "name": {
     "kind": "gamesConfiguration#localizedStringBundle",
     "translations": [
      {
       "kind": "gamesConfiguration#localizedString",
       "locale": "en-US",
       "value": "Name"
      }
     ]
    },
    "description": {
     "kind": "gamesConfiguration#localizedStringBundle",
     "translations": [
      {
       "kind": "gamesConfiguration#localizedString",
       "locale": "en-US",
       "value": "Description"
      }
     ]
    },
    "pointValue": 5,
    "iconUrl": "Icon url",
    "sortRank": 1
   }
  }
 ]
}
public List<AchievementConfigurationResource> items = new List<AchievementConfigurationResource>();
[JsonProperty]
List<AchievementConfigurationResource> items = new List<AchievementConfigurationResource>();