「Unity/Csharp/Json」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→jsonを扱うには) |
(→json展開) |
||
行5: | 行5: | ||
==json展開== | ==json展開== | ||
+ | {"status":"ok","notice":"","user":{"id":0,"name":"","likes":["tyoko","prin"]}} | ||
+ | |||
using System; | using System; | ||
public class AuthScript : MonoBehaviour { | public class AuthScript : MonoBehaviour { | ||
行17: | 行19: | ||
public int id = 0; | public int id = 0; | ||
public string name = ""; | public string name = ""; | ||
+ | public string[] likes; | ||
} | } | ||
void ExecJsonParse (string json) { | void ExecJsonParse (string json) { | ||
行23: | 行26: | ||
Debug.Log("notice=" + resData.notice); | Debug.Log("notice=" + resData.notice); | ||
Debug.Log("notice=" + resData.user.name); | Debug.Log("notice=" + resData.user.name); | ||
+ | foreach (string like in resData.user.likes) { | ||
+ | Debug.Log("like=" + like); | ||
+ | } | ||
} | } | ||
} | } |
2018年12月8日 (土) 01:57時点における版
jsonを扱い方
Unity 5.3からJsonUtilityが使えるようになったので、JsonUtilityを使う。
使いたいpropertyだけ定義すればそれだけを取得することもできる。
json展開
{"status":"ok","notice":"","user":{"id":0,"name":"","likes":["tyoko","prin"]}}
using System; public class AuthScript : MonoBehaviour { [Serializable] class ResData { public string status = "ok"; public string notice = ""; public ResUser user; } [Serializable] class ResUser { public int id = 0; public string name = ""; public string[] likes; } void ExecJsonParse (string json) { ResData resData = JsonUtility.FromJson<ResData>(json); Debug.Log("status=" + resData.status); Debug.Log("notice=" + resData.notice); Debug.Log("notice=" + resData.user.name); foreach (string like in resData.user.likes) { Debug.Log("like=" + like); } } }
以下エラーとなる場合は[Serializable]が足りない場合がある
NullReferenceException: Object reference not set to an instance of an object
[Serializable]を追加して以下エラーとなる場合はusing System;が足らない可能性がある。
error CS0246: The type or namespace name `Serializable' could not be found. Are you missing an assembly reference?