2017-03-14 61 views
0

目前在我的开发中使用LitJson。 Json在Unity编辑器中工作得非常好,但在Android设备中却不行。尝试加载json文件的各种方式,但没有奏效。这里是我最新的代码:JSON文件适用于Unity编辑器,但不适用于Android设备

string path = Application.persistentDataPath + "/Products.json"; 
    string jsonString = File.ReadAllText (path); 
    if(File.Exists(path)) { 
    jsonParser data = JsonUtility.FromJson<jsonParser>(jsonString); 

    data.products.Add (product); 
    Debug.Log (data.products [1].code); 

    string jsonString2 = JsonUtility.ToJson (data); 
    Debug.Log (jsonString2); 

    File.WriteAllText (path, jsonString2.ToString()); 
    } else{ 
     File.WriteAllText (path, jsonString); 
    } 

非常感谢!

+2

你把json文件放在哪里? – Programmer

+0

您是否验证过'Products.json'存在于该路径?由Application.persistentDataPath指定的文件夹通常不包含任何文件,除非将它们放在那里。 – rutter

+0

我在流资产文件夹中添加了json文件 – Sarah

回答

0

我建议你使用资源加载而不是IO,因为最少的是特定于平台的东西。 因此,如果您在项目的Assets文件夹的根目录下创建了“Resources”文件夹,并将其放入其中的json文件,使其看起来像这样“/Assets/Resources/Products.json” 并将您的代码更改为此

string jsonString = Resources.Load<string>("Products.json"); 
    if (jsonString != null) 
    { 
     jsonParser data = JsonUtility.FromJson<jsonParser>(jsonString); 

     data.products.Add(product); 
     Debug.Log(data.products[1].code); 

     jsonString = JsonUtility.ToJson(data); 
     Debug.Log(jsonString); 
    } 
    using (FileStream fs = new FileStream("Products.json", FileMode.Create)) 
    { 
     using (StreamWriter writer = new StreamWriter(fs)) 
     { 
      writer.Write(jsonString); 
     } 
    } 
    UnityEditor.AssetDatabase.Refresh(); 

一切都应该正常工作。

+1

我得到错误:类型'字符串'不能用作类型参数 – Sarah

相关问题