AchievementConfigurations : desetialize하려고합니다. 여기에서 https://developers.google.com/games/services/publishing/api/achievementConfigurations/list의 REST 응답을 나열하십시오.Google Play 개발자 Api 및 JsonConvert.DeserializeObject
문제는이 줄은 최상위 수준 개체 만 채우고 목록은 비어있는 상태입니다. 오류 메시지는 어떤 일이 일어나고 있는지를 추적하기 어렵게하는 throw입니다. 웹 사이트를 사용하여 json 구조화 된 클래스를 생성 한 후 불필요한 곳에 중복을 제거했습니다. 정말 긴하지만 여기에서 찾을 수 있습니다 https://developers.google.com/games/services/publishing/api/achievementConfigurations#resource
{
"kind": "gamesConfiguration#achievementConfigurationListResponse",
"nextPageToken": string,
"items": [
achievementConfigurations Resource
]
}
나는 내가로 시작하는 데이터를 미러링 만든 일련의 클래스를 가지고 있기 때문에 응답은 다음과 같습니다
, 나는 achievementConfiguration 자원을 제거한 AchievementConfigurationListResponse 클래스
public class AchievementConfigurationListResponse
{
public string kind = "gamesConfiguration#achievementConfigurationListResponse";
public string nextPageToken = "";
List<AchievementConfigurationResource> items = new List<AchievementConfigurationResource>();
}
다음 위로가 목록에서 항목 인 AchievementConfigurationResource, 그것은 몇 가지 중첩 된 객체
있다AchievementConfigurationListResponse res = JsonConvert.DeserializeObject<AchievementConfigurationListResponse>(content);
:
public class AchievementConfigurationResource
{
public static string[] types = new string[] { "STANDARD", "INCREMENTAL" };
public static string[] states = new string[] { "REVEALED", "HIDDEN", "UNLOCKED" };
public string kind = "gamesConfiguration#achievementConfiguration";
public string token = "";
public string id = "";
public string achievementType = types[0];
public string initialState = states[0];
public int? stepsToUnlock;
public AchievementConfigurationDetail draft = new AchievementDataResource();
public AchievementConfigurationDetail published = new AchievementDataResource();
}
그 중첩 된 개체가 나는 다음 행과 JSON에 전화를 포함 AchievementConfigurationDetail
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;
}
이러한 유형의 몇 가지 LocalizedStringBundles
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 = "";
}
}
있습니다
다음은 응답 사본입니다. 제거 된 데이터는 제거되지만 키와 구조는 모두 손상되지 않습니다. 이 파일은 전체 파일이 5000 줄 길이이기 때문에 단일 레코드 만 포함합니다.
{
"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
}
}
]
}