Unity3d 3の新しいセキュリティ対策により、Web PlayerアプリケーションにLitJsonを使用するように制限されています。そうしないと、コンパイルされません。
この出力をオブジェクト(userEcoGet.textのコンテンツ)としてシリアル化する簡単な方法はありますか?
{"building_id":"1","building_level":"0","workers":"0","building_health":"100"}{"building_id":"2","building_level":"0","workers":"0","building_health":"100"}...{"building_id":"32","building_level":"0","workers":"0","building_health":"100"}
このコードは、JSONから最初のオブジェクトのみを入力します。
using UnityEngine;
using System.Collections;
using LitJson;
...
public EcoData localEcoData;
...
localEcoData = JsonMapper.ToObject<EcoData>(userEcoGet.text);
...
public class EcoData
{
public string building_id;
public string building_level;
public string workers;
public string building_health;
}
localEcoDataを配列に変換すると、コンストラクターエラーが欠落します。そして、この状況でコンストラクターを正しくネストする方法がわからないだけで、それが役立つかどうかさえわかりません。
この時点で、私はJsonReaderを使用して、オブジェクトを手動で入力することに頼っています。どんな助けでもいただければ幸いです。ありがとうございました。
編集:それはただクレイジーで、私が自分自身に課したくだらないJSONフォーマットのために今日一日中殺されました...
これは完全に機能するようになりました。localEcoData[1,2...32]は、すべての要素にアクセスできるオブジェクト配列です。
public EcoData[] localEcoData;
...
localEcoData = JsonMapper.ToObject<EcoData[]>(userEcoGet.text);
私がしなければならなかったのは、MySqlを処理するPHPページでJSONを正しく作成し、整然とUnityに転送することだけです。転送にアレイを使用せずに直接エコーしていました。これで、出力は次のようになり、うまく機能します。
[{"building_id":"1","building_level":"0","workers":"0","building_health":"100"}{"building_id":"2","building_level":"0","workers":"0","building_health":"100"}...{"building_id":"32","building_level":"0","workers":"0","building_health":"100"}]
ありがとう!