安卓 和Unity 读写 同一Json 文件
Java 代码 :
package com.Unity.Tool.AndroidUI;
import android.util.Log;
import com.google.gson.Gson;
import org.apache.commons.text.StringEscapeUtils;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
public class JsonFileTool {
public static String filePath="/storage/emulated/0/Android/data/包名/files"+"/文件名.json";
public static String saveToLocal(String jsonData) {
try {
String targetjsonText = JsonToString(jsonData);
File file = new File(filePath);
OutputStream out = new FileOutputStream(file);
out.write(targetjsonText.getBytes());
out.close();
Log.e("RecordApp", "Config保存成功 :"+targetjsonText);
} catch (Exception e) {
e.printStackTrace();
Log.e("RecordApp", "Config保存失败");
}
return "";
}
/**
* 方法名:readJsonFile(String filePath)
* 功 能:从本地读取json
* 参 数:String filePath
* 返回值:String
*/
public static String readJsonFile() {
StringBuilder sb = new StringBuilder();
try {
File file = new File(filePath);
InputStream in = null;
in = new FileInputStream(file);
int tempbyte;
while ((tempbyte = in.read()) != -1) {
sb.append((char) tempbyte);
}
in.close();
} catch (Exception e) {
e.printStackTrace();
}
String data= sb.toString();
String newData=data.replace("\","");
Log.e("ddddd", "readJsonFile: " +sb.toString());
return newData;
}
//把Json文件转换为String
public static String JsonToString(Object jsonData){
Gson gson =new Gson();
String json = gson.toJson(jsonData);
String jsonText= StringEscapeUtils.unescapeJson(json);
return jsonText.substring(1,jsonText.length()- 1);
}
}
C#代码 :
using LitJson;
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using UnityEngine;
public class AndroidJosnTool
{
public static string filepath = Application.persistentDataPath+ "/文件名.json";
///
/// 存储json数据
///
public static void WriteJsonFile(T json)
{
//因为JsonMapper.ToJson方法不支持把int转换成string类型,所以用这行代码把int转换成string
JsonMapper.RegisterImporter((int value) =>
{
return value.ToString();
});
//把数据保存成Json文件的格式,将数据对象转换成json格式的字符串
string jsonData = JsonMapper.ToJson(json); ;
//创建文件 *** 作
FileInfo fileInfo = new FileInfo(filepath);
//创建json文件
if (!fileInfo.Exists)
{
fileInfo.Create().Dispose();
fileInfo.Refresh();
Debug.Log("DDDDD 文件创建完成");
}
Debug.Log("DDDDD 开始存储文件");
///使用正则表达式 将乱码json转成UTF-8
Regex reg = new Regex(@"(?i)\\[uU]([0-9a-f]{4})");
jsonData = reg.Replace(jsonData, delegate (Match m) { return ((char)Convert.ToInt32(m.Groups[1].Value, 16)).ToString(); });
//写入内容
StreamWriter write = new StreamWriter(filepath);
write.WriteLine(jsonData);
write.Dispose();
write.Close();
Debug.Log("DDDDD 存储文件完成");
}
///
/// 读取json 文件
///
public static T ReadJson ()
{
//文件不存在
if (!File.Exists(filepath))
{
return default(T);
}
//读取json 文件
StreamReader reader = new StreamReader(filepath);
string jsonData = reader.ReadToEnd();
string jjj = jsonData.Replace("\\","");
Debug.Log("宝箱数据 :" + jjj);
reader.Dispose();
reader.Close();
return JsonMapper.ToObject(jjj);
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)