Java解析未格式化为数组的JSONList

时间:2019-02-05 16:15:45

标签: java json

我正在努力解决这个问题,在任何地方都找不到答案。我有一个.jsonlist格式的文件:

example.jsonlist

{"op_author":1, "op_name":2}
{"op_author":3, "op_name":4}
{"op_author":5, "op_name":6}

我想将其解析为Java对象,但是我找不到使用Gsonjson-simple库的方法,因为它的格式不像json对象。

这是我到目前为止尝试过的:

Modele.java

public class Modele {
    private String op_author, op_name;
}

JsonListToJava.java

import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

public class JsonListToJava {

    public static void main(String[] args) throws IOException {
        try(Reader reader = new InputStreamReader(JsonListToJava.class.getResourceAsStream("example.jsonlist"), "UTF-8")){
            Gson gson = new GsonBuilder().create();
            Modele p = gson.fromJson(reader, Modele.class);
            System.out.println(p);
        }
    }
}

但是我得到这个错误:

  

线程“ main”中的com.google.gson.JsonSyntaxException异常:   com.google.gson.stream.MalformedJsonException:使用   JsonReader.setLenient(true)在第2行的列中接受格式错误的JSON ...

1 个答案:

答案 0 :(得分:1)

JSON库通常设计为与有效JSON一起使用。

您可以逐行读取文件,然后解析:

try(BufferedReader reader = new BufferedReader(new InputStreamReader(JsonListToJava.class.getResourceAsStream("example.jsonlist"), "UTF-8"))){
    Gson gson = new GsonBuilder().create();
    Stream<String> lines = reader.lines();

    lines.forEach((line) -> {
        Model p = gson.fromJson(line, Model.class);
        System.out.println(p);
    });
}