java——fastjson 解析超大文件,将json文件转为csv文件

转换前:

{
    "result": [
        {
            "class": "A5", 
            "student": [
                "name", 
                "age", 
                "sex"
            ], 
            "values": [
                [
                    "aaa", 
                    "12", 
                    "M"
                ], 
                [
                    "bbb", 
                    "13", 
                    "F"
                ]
            ]
        }
    ], 
    "code": 0
}

转换逻辑:

public class Test {
    public static void main(String[] args) throws IOException {

        File file = new File("C:\\Users\\Administrator\\Desktop\\aaa.json");

        new Test().json2csv(file);
    }


    public File json2csv(File jsonFile) throws IOException {
        JSONReader reader = null;
        BufferedWriter bufferedWriter = null;
        try {
            reader = new JSONReader(new FileReader(jsonFile));

            File target = new File(jsonFile.getParent(), "inventory.csv");

            bufferedWriter = new BufferedWriter(new FileWriter(target));

            reader.startObject();

            while (reader.hasNext()) {

                String name = reader.readString();

                if (name.equalsIgnoreCase("result")){
                    readResultPart(reader,bufferedWriter);

                }else if (name.equalsIgnoreCase("code")){
                    reader.readInteger();
                }
            }

            reader.endObject();

            bufferedWriter.close();

            return target;


        } catch (Exception e) {
           e.printStackTrace();

        }finally {
            if (null != reader){
                reader.close();
            }
            bufferedWriter.close();
        }
        return null;
    }


    private  void readResultPart(JSONReader reader,BufferedWriter writer) throws IOException {

        reader.startArray();

        while (reader.hasNext()){
            reader.startObject();

            while (reader.hasNext()){
                String key = reader.readString();

                if (key.equalsIgnoreCase("class")){
                    reader.readString();
                }else if (key.equalsIgnoreCase("student")){
                    reader.startArray();
                    StringBuilder  attrNames = new StringBuilder();
                    while (reader.hasNext()){
                        attrNames.append(",\""+reader.readString()+"\"");
                    }
                    reader.endArray();

                    writer.write(attrNames.toString());
                }else if (key.equalsIgnoreCase("values")){
                    reader.startArray();

                    while (reader.hasNext()){
                        writer.newLine();
                        writer.write(readValueSubArray(reader));
                    }

                    reader.endArray();
                }

            }
            reader.endObject();
        }

        reader.endArray();

    }


    private String readValueSubArray(JSONReader reader){

        StringBuilder stringBuilder = new StringBuilder();

        reader.startArray();

        while (reader.hasNext()){
            stringBuilder.append(",\""+reader.readString()+"\"");
        }

        reader.endArray();

        return stringBuilder.toString();
    }
}

转换后:

,"name","age","sex"
,"aaa","12","M"
,"bbb","13","F"

 

使用Fastjson解析JSON文件很简单,你可以按照以下步骤进行操作: 1. 导入Fastjson库 在Java代码中导入Fastjson库,你可以在类的头部添加以下代码: ```java import com.alibaba.fastjson.*; ``` 2. 读取JSON文件 使用Java文件读取操作,读取JSON文件并存储为字符串。以下是一个简单的示例: ```java String jsonStr = new String(Files.readAllBytes(Paths.get("path/to/json/file.json"))); ``` 注意,你需要将文件路径替换为你的实际路径。 3. 解析JSON字符串 使用Fastjson的静态方法 `parseObject()` 解析JSON字符串,并将其转换Java对象。以下是一个简单的示例: ```java JSONObject jsonObj = JSON.parseObject(jsonStr); ``` 注意,上面的示例假设JSON字符串表示一个JSON对象。如果JSON字符串表示一个JSON数组,你可以使用`parseArray()` 方法解析: ```java JSONArray jsonArray = JSON.parseArray(jsonStr); ``` 4. 获取JSON对象的值 一旦你将JSON字符串解析Java对象,你可以使用Java对象的方法或属性来获取对象的值。以下是一个简单的示例: ```java String name = jsonObj.getString("name"); int age = jsonObj.getIntValue("age"); ``` 注意,上面的示例假设JSON对象中包含一个名为“name”的字符串属性和一个名为“age”的整数属性。 以上就是使用Fastjson解析JSON文件的基本步骤。你可以在Java代码中使用其他Fastjson方法和属性,以便更方便地操作JSON数据。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值