本文介绍了如何读取一个json文本文件,并把数据保存到一个java对象中。
基本使用
从.json文件中读取:
String srcPath = "saveNumpyAsJsonFile.json";
JSONReader jsonReader = getJsonReader(srcPath);
PatchTestData patchTestData = jsonReader.readObject(PatchTestData.class);
private JSONReader getJsonReader(String srcPath) {
JSONReader jsonReader = null;
try {
FileReader fileReader=new FileReader(appContext.getCacheDir().toString()+ File.separator + srcPath);
jsonReader = new JSONReader(fileReader);
} catch (FileNotFoundException e) {
Log.d(TAG, "loadTestData: 读取失败");
e.printStackTrace();
}
return jsonReader;
}
这需要构建 java Bean类作ORM
public class PatchTestData {
float[][][][] img; // 对应json数组 变量名字就是json中的key
float[][] shift; // 对应json数组
float result;
public PatchTestData() {
}
public PatchTestData(float[][][][] img, float[][] shift, float result) {
this.img = img;
this.shift = shift;
this.result = result;
}
public float[][][][] getImg() {
return img;
}
public void setImg(float[][][][] img) {
this.img = img;
}
public float[][] getShift() {
return shift;
}
public void setShift(float[][] shift) {
this.shift = shift;
}
public float getResult() {
return result;
}
public void setResult(float result) {
this.result = result;
}
@Override
public String toString() {
return "PatchTestData{" +
"img=" + Arrays.toString(img) +
", shift=" + Arrays.toString(shift) +
", result=" + result +
'}';
}
}
逐层剥洋葱方法
private List<List<List<List<Float>>>> readImgFromJsonReader(JSONReader jsonReader) {
List<List<List<List<Float>>>> imageData;
jsonReader.startArray();//---> [ 开启读List对象
imageData = new ArrayList<>();
while(jsonReader.hasNext()) { //[
jsonReader.startArray();
List<List<List<Float>>> listDim2=new ArrayList<>();
while(jsonReader.hasNext()) { //[
jsonReader.startArray();
List<List<Float>> listDim3=new ArrayList<>();
while (jsonReader.hasNext()){ //[
jsonReader.startArray();
ArrayList<Float> listDim4=new ArrayList<>(4);
while (jsonReader.hasNext()){ //[
listDim4.add(Float.valueOf(jsonReader.readString()));
}
jsonReader.endArray();
listDim3.add(listDim4);
}
jsonReader.endArray();
listDim2.add(listDim3);
}
jsonReader.endArray();
imageData.add(listDim2);
}
jsonReader.endArray();//---> ]
return imageData;
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CfvBILTL-1602653518075)(34 FastJson使用.assets/image-20200923143607765.png)]
}
jsonReader.endArray();//—> ]
return imageData;
}
[外链图片转存中...(img-CfvBILTL-1602653518075)]
版权声明:本文为qq_27262241原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。