私は、ユニティエンジンを使用して英語のゲームを構築しています。私はC#でJSONを解析するのに苦労しています。C#、Unity3D、JSON構文解析:JSONをC#オブジェクトに解析できません
私は過去数日間、JSONを解析しようとしていますが、失敗しています。私はJSONを検証し、jsonStringをコンソールにデバッグすることができますが、jsonUtilityがjsonに手を加えたらすぐにNULLデータのロードを終了します。ここで
は私のJSONです:ここでは
{"question": {"questionType": "0", "categoryID": "0", "bonusBool": "FALSE", "answerText": "cake", "questionText": "If something is really easy to do, it\u2019s a piece of \u2026\u2026\u2026 \\n a. pie \\n b. tart \\n c. cake", "ID": "0"}}
は、私のC#のである:
[System.Serializable]
public class QuestionDataAsString
{
public string questionText;
public string answerText;
public string categoryID;
public string ID;
public string questionType;
public string bonusBool;
}
[System.Serializable]
public class Question{
public string questionText;
public string answerText;
public int categoryID;
public int ID;
public int questionType;
public bool bonusBool;
}
public static void LoadQuestion()
{
string filePath = Path.Combine(Application.streamingAssetsPath, "questionData.json");
string dataAsJSON = File.ReadAllText(filePath);
Debug.Log(dataAsJSON);
QuestionDataAsString question = JsonUtility.FromJson<QuestionDataAsString>(dataAsJSON);
Debug.Log(question.questionText);
}
public static Question ConvertQuestionDataFromString(QuestionDataAsString stringData)
{
Question question = new Question();
question.questionText = stringData.questionText;
question.answerText = stringData.answerText;
question.categoryID = int.Parse(stringData.categoryID);
question.ID = int.Parse(stringData.ID);
question.questionType = int.Parse(stringData.questionType);
question.bonusBool = Boolean.Parse(stringData.bonusBool);
return question;
}
私はスプラッシュスクリーンコントローラを介してLoadQuestionを実行すると、私は文字列としてコンソールにJSONをログに記録することができます。しかし、いったんjsonUtilityを使うと、私はNullオブジェクトを取得します。
これは、コンソール出力です:
{"question": {"questionType": "0", "categoryID": "0", "bonusBool": "FALSE", "answerText": "cake", "questionText": "If something is really easy to do, it\u2019s a piece of \u2026\u2026\u2026 \\n a. pie \\n b. tart \\n c. cake", "ID": "0"}}
UnityEngine.Debug:Log(Object)
SaveLoadManager:LoadQuestion() (at Assets/Scripts/SaveLoadManager.cs:91)
<Start>c__Iterator0:MoveNext() (at Assets/Scripts/SplashController.cs:18)
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)
Null
UnityEngine.Debug:Log(Object)
SaveLoadManager:LoadQuestion() (at Assets/Scripts/SaveLoadManager.cs:93)
<Start>c__Iterator0:MoveNext() (at Assets/Scripts/SplashController.cs:18)
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)
私はここで答えを通って、団結回答で検索しましたが、関連するすべてのソリューションを発見していません。
fromJsonがNullをすべて返す理由は何ですか?
JSONがC#クラスの構造と一致しません。 – DavidG
そのJSONクラスを使用して幸運を祈る、それは単一性ではありませんJSONの脱石化7つのネストされたレベル –
@ johnny5何が問題なのですか?これはわずか2レベルです。 – DavidG