有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java有些对象无法通过Gson反序列化

我正在尝试解析以下url:

http://api.crossref.org/works?rows=2

当我通过Gson解析它时,我得到了一些记录,但不知何故,还有一些记录保留了下来

这是我的代码:

    BufferedReader in = new BufferedReader(new InputStreamReader(url_tdm.openStream(), "UTF-8"));
    StringBuffer buffer = new StringBuffer();

    int read;
    char[] chars = new char[1024];
    while ((read = in.read(chars)) != -1)
    buffer.append(chars, 0, read); 

    String jsonLine = buffer.toString();

    JsonReader reader = new JsonReader(new StringReader(jsonLine));
    reader.setLenient(true);  // this is for Malformed json

    Gson gson = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_DASHES).create();

    Crossref answer = gson.fromJson(reader, Crossref.class );

    List<Items> ao = answer.message.items;

    public class Crossref {
    public Message message;}

    public class Message {
    public List<Items> items;}

    public class Items {   
    public List<String> containerTitle;
    public List<String> ISSN;
    public String publisher;
    public List<String> title;
    public String DOI;
    public String type;}

因此,通过上面的代码,我可以获得容器标题、发布者和标题值。但ISSN和DOIs是空的

我使用了FieldNamingPolicy,因为“container title”包含破折号,我不能用java那样命名我的字段(所以我把它写成camel case containerTitle

我不确定这是否会影响大写的DOI和ISSN记录,还是完全不同


共 (1) 个答案