public void WriteJson(object ob, string jsonName)
{
string json = LitJson.JsonMapper.ToJson(ob)
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(json)
string filePath = Application.dataPath + "/Resources/" + jsonName + ".json"
using (System.IO.FileStream stream = new System.IO.FileStream(filePath, System.IO.FileMode.Create))
{
stream.Write(bytes, 0, bytes.Length)
}
UnityEditor.AssetDatabase.Refresh()//属性Asset,生成完成后立刻可以看到文件
}
方法二 jsonwriter 半编译写法
void CreateJson()
{
string path = Application.dataPath + "/Resources/Jsons/" + objBase.transform.name + ".json"
FileInfo fileInfo = new FileInfo(path)
StreamWriter sw = fileInfo.CreateText()
StringBuilder sb = new StringBuilder()
JsonWriter jsonwriter = new JsonWriter(sb)
jsonwriter.WriteObjectStart()//1
for (int i = 0i <numbers.Counti++)
{
jsonwriter.WritePropertyName("Number" + (i + 1))
jsonwriter.WriteObjectStart()//1-1
type = new List<Transform>()
foreach (Transform child in numbers[i].transform)
type.Add(child)
jsonwriter.WritePropertyName("TypeCount")jsonwriter.Write(type.Count)
for (int j = 0j <type.Countj++)
{
jsonwriter.WritePropertyName("Type" + (j + 1))
jsonwriter.WriteObjectStart()//1-1-1
pos = new List<Transform>()
foreach (Transform child in type[j].transform)
pos.Add(child)
jsonwriter.WritePropertyName("Size")jsonwriter.Write(pos[0].transform.localScale.x.ToString())
jsonwriter.WritePropertyName("Pos")
jsonwriter.WriteArrayStart()
for (int k = 0k <pos.Countk++)
{
jsonwriter.Write("(" + pos[k].transform.localPosition.x + "," + pos[k].transform.localPosition.y + ")")
}
jsonwriter.WriteArrayEnd()
jsonwriter.WriteObjectEnd()//1-1-1
}
jsonwriter.WriteObjectEnd()//1-1
}
jsonwriter.WriteObjectEnd()//1
sw.WriteLine(sb.ToString())
sw.Close()
AssetDatabase.Refresh()
}
Json 里面的数据是double 类型,使用float 会出问题
double.Parse float .Parse 不一样
上面三篇文章作为参考,测试一下pickle和JSON的读写。
先说结论:JSON比pickle快,在需要较大的data时,可以考虑用ujson,更快。一般情况下JSON够用。另外,JSON不支持np.array,需要转换成list(.tolist()),所以考虑到易用性而不需要考虑读取速度时,用pickle最无脑简单。
首先需要导入json库:
import json
json的读写:
一共有四个模块:dumps、dump、loads、load
json.dumps: python对象——>JSON字符
json.loads: JSON字符——>python对象
json.dumps: 将数据写入json文件中
在使用JSON的时候遇到一个报错:
NumPy array is not JSON serializable
搜到解决方案:
stackoverflow-NumPy array is not JSON serializable
简单说就是JSON没有np array的编码器,所以需要先把array转换成list:
your_array.tolist()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)