###前提・実現したいこと
Unityのスクリプト(c#)上で、Json形式のstring型の変数をapiとしてGetして受け取り、その受け取ったstring型の変数をあらかじめ作っておいたクラスに代入し、リスト化したいと思っております。
具体的には、apiとして以下のJson形式の文字列を受け取るので、
{"player_data":[{"id":1,"name":"Bob","point":42},{"id":2,"name":"Mary","point":26},{"id":3,"name":"Mike","point":63},{"id":4,"name":"Sayaka","point":53},{"id":5,"name":"Json","point":64}]}
このデータを以下のクラスを用いて
public class PlayerListData : MonoBehaviour { public List<PlayersListDetail> player_list { get; set; } public class PlayersListDetail { public int id { get; set; } public string title { get; set; } public int point { get; set; } } }
以下のようにPlayer_listをインスタンス化した変数にPlayerListDatail型のデータを追加するようにしたいと思っております。
id | name | point |
---|---|---|
1 | Bob | 42 |
2 | Mary | 26 |
3 | Mike | 63 |
4 | Sayaka | 53 |
5 | Json | 64 |
なにぶんJsonデータをUnityで扱うこと自体が初めてで、c#でのListやDictionaryの機能も経験が浅いです。
様々なJsonデータをc#にデシリアライズするサイトを見たのですが、API内の初めの"player_data"の部分を取り除くのがやっとだったり、できたと思っても型が違うと怒られて何日もここの実装に詰まっているので質問させていただきました。
今回質問したい内容は以下の2つです
0. 上のような仕様を満たすようなdecodeJsonクラス(途中までは下のソースコードに書いてあります)をどう書いていけば良いのでしょうか?(ヒント(?)が欲しいです)
0. 下のソースコード内に登場するIList
, IDictionary
とはList, Dictionaryとどのように違うのでしょうか?
###途中まで考えて見たソースコード
using System.Collections; using System.Collections.Generic; using UnityEngine; using MiniJSON; public class decodeJson : MonoBehaviour { [SerializeField] private string url; // Use this for initialization void Start () { StartCoroutine(Get(url)); } IEnumerator Get (string url) { // 送信開始 WWW www = new WWW(url); yield return www; PlayerListData playerListData = new PlayerListData(); // 成功 if (www.error == null) { string change = "[" + www.text + "]"; IList namesList = (IList) Json.Deserialize(change); foreach (IDictionary name in namesList) { var hoge = tag["player_data"]; // 上でplayer_dataの部分は取り除けていると思っています //IList tagsmiddleList = (IList) Json.Deserialize(hoge); /*上のコメントを外すと error CS1503: Argument `#1' cannot convert `object' expression to type `string' といったエラーが表示されます */ foreach (var fuga in tagsmiddleList) { // jsでしたら tag["player_data"][0]といった形で取れると思うのですが… } } } // 失敗 else{ Debug.Log("Failed"); } } }
###試したこと
[Unity][MiniJSON]JSONデータを読み込む
上のサイトを用いて書きました
また、上記以外のサイトを使って書いてみるといったようなことも行ってみました。
###補足情報(言語/FW/ツール等のバージョンなど)
Unity : 5.5.0f3
使用言語 c#

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/28 08:20 編集
退会済みユーザー
2017/03/28 08:16 編集
退会済みユーザー
2017/03/28 08:25
2017/03/28 08:29
退会済みユーザー
2017/03/28 08:40
2017/03/28 08:56