FastJson 读取JSON文件到

本文介绍了如何读取一个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版权协议,转载请附上原文出处链接和本声明。