2016-05-23 14 views
0

Unity上のiOSアプリケーションで作業していますが、問題が発生します。 私はJSONを使用し、ユニティではNewtonsoft.Jsonを使用します(公式サイトからdllファイルをダウンロードし、.Net 2.0のUnityプロジェクトバージョンに追加します)。JSONがiOSアプリケーションで動作していないUnity 5

MacでUnityでシーンを開始すると、すべて正常に動作しますが、iPhone用のプロジェクトを作成してiPhoneでシーンを開始すると、このログが出力されます(要素はドロップダウンに追加されません)。

jsonファイルからのシーンでは、自分の要素のリストを取得し、ドロップダウンに追加します。

public Dropdown anions; 
public Dropdown cations; 

StreamReader reader; 
string json; 
SolubilityTable solubility; 

public void Start() { //When I start Scene 
    reader = new StreamReader (Application.dataPath + "/Data/solubilityTable.json"); 
    json = reader.ReadToEnd(); 
    solubility = JsonConvert.DeserializeObject<SolubilityTable>(json); 

    anions.AddOptions (solubility.anions); 
    cations.AddOptions (solubility.cations); 
} 

ログイン:

MissingMethodException: Method not found: 'Default constructor not  found...ctor() of System.ComponentModel.TypeConverter'. 
    at System.Activator.CreateInstance (System.Type type, Boolean  nonPublic) [0x00000] in <filename unknown>:0 
    at System.Activator.CreateInstance (System.Type type) [0x00000] in  <filename unknown>:0 
    at System.ComponentModel.TypeDescriptor.GetConverter (System.Type  type) [0x00000] in <filename unknown>:0 
    at Newtonsoft.Json.Serialization.JsonTypeReflector.GetTypeConverter  (System.Type type) [0x00000] in <filename unknown>:0 
    at Newtonsoft.Json.Utilities.ConvertUtils.GetConverter (System.Type  t) [0x00000] in <filename unknown>:0 
    at Newtonsoft.Json.Serialization.DefaultContractResolver.CanConvertToString  (System.Type type) [0x00000] in <filename unknown>:0 
    at Newtonsoft.Json.Serialization.DefaultContractResolver.CreateContract (System.Type objectType) [0x00000] in <filename unknown>:0 
    at Newtonsoft.Json.Serialization.DefaultContractResolver.ResolveContract (System.Type type) [0x00000] in <filename unknown>:0 
    at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.GetContractSafe (System.Type type) [0x00000] in <filename unknown>:0 
    at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize (Newtonsoft.Json.JsonReader reader, System.Type objectType, Boolean checkAdditionalContent) [0x00000] in <filename unknown>:0 
    at Newtonsoft.Json.JsonSerializer.DeserializeInternal (Newtonsoft.Json.JsonReader reader, System.Type objectType) [0x00000] in <filename unknown>:0 
    at Newtonsoft.Json.JsonSerializer.Deserialize (Newtonsoft.Json.JsonReader reader, System.Type objectType) [0x00000] in <filename unknown>:0 
    at Newtonsoft.Json.JsonConvert.DeserializeObject (System.String value, System.Type type, Newtonsoft.Json.JsonSerializerSettings settings) [0x00000] in <filename unknown>:0 
    at Newtonsoft.Json.JsonConvert.DeserializeObject[T] (System.String value, Newtonsoft.Json.JsonSerializerSettings settings) [0x00000] in <filename unknown>:0 
    at Newtonsoft.Json.JsonConvert.DeserializeObject[T] (System.String value) [0x00000] in <filename unknown>:0 
    at Solubility.Start() [0x00000] in <filename unknown>:0 

(Filename: currently not available on il2cpp Line: -1) 
+0

あなたが受け取るJsonはどのように見えますか?ここで受け取ったJsonファイルを貼り付けることはできますか? – Programmer

+0

@Programmer https://github.com/diniska/chemistry/blob/master/PeriodicalTable/periodicTable.json –

答えて

0

使用ユニティのジェイソンAPI JsonUtility.FromJson。

[System.Serializable] 
public class Element 
{ 
    public string group; 
    public int position; 
    public string name; 
    public object number; 
    public string small; 
    public double molar; 
    public int[] electrons; 
} 

[System.Serializable] 
public class Table 
{ 
    public string wiki; 
    public Element[] elements; 
} 

[System.Serializable] 
public class Lanthanoid 
{ 
    public string group; 
    public int position; 
    public string name; 
    public int number; 
    public string small; 
    public double molar; 
    public int[] electrons; 
} 

[System.Serializable] 
public class Actinoid 
{ 
    public string group; 
    public int position; 
    public string name; 
    public int number; 
    public string small; 
    public double molar; 
    public int[] electrons; 
} 

[System.Serializable] 
public class SolubilityTable 
{ 
    public Table[] table; 
    public Lanthanoid[] lanthanoids; 
    public Actinoid[] actinoids; 
} 

System.IO.StreamReader reader; 
string json; 
SolubilityTable solubility; 

void Start() 
{ 
    solubility = new SolubilityTable(); 
    reader = new System.IO.StreamReader(Application.dataPath + "/Data/solubilityTable.json"); 
    json = reader.ReadToEnd(); 
    solubility = JsonUtility.FromJson<SolubilityTable>(json); 


    //Show all wiki from Table 
    for (int i = 0; i < solubility.table.Length; i++) 
    { 
     Debug.Log("Got: " + solubility.table[i].wiki); 
    } 
} 

参考注

また、あなたはこのような問題を持っている場合、JSONからクラスを生成するには、このsiteを使用することを検討してください。完了したら、Listsarraysに変更し、すべての変数から自動プロパティー{ get; set; }を削除します。 UnityのビルドされたJsonシリアライザが動作します。 5.40.B13でテストされています。問題がある場合は、このバージョンにアップデートすることをお勧めします。

+0

ありがとう!それはうまくいく。私はList to arrayを変更しない。 –

+0

@IvanIstominようこそ。リストをArrayに変更すると言ったとき、あなたのJsonのクラスを生成するために答えに入れたWebサイトを使用するときにそうする必要があるということでした。今のところ私はあなたのためにそれをしているので、あなたはする必要はありません。 – Programmer

関連する問題