JSON文件适用于Unity Editor,但不适用于Android设备

时间:2017-03-14 20:19:35

标签: android json unity3d litjson

目前在我的开发中使用LitJson。 Json在Unity Editor中工作得非常好,但在android设备中却没有。尝试了加载json文件的各种方法但没有任何效果。这是我最新的代码:

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);
    }

非常感谢!

1 个答案:

答案 0 :(得分:-1)

我建议你使用Resources加载而不是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();

一切都应该正常。