android - 使用 Jackson 库进行 JSON 解析

标签 android json jackson

我的 JSON 数据如下所示:

[
{
  "id":1,
  "ad_name":"Test Ad",
  "ad_text":"This is my ad text"
},
{
  "id":2,
  "ad_name":"Test Ad",
  "ad_text":"This is my ad text"
},
{
  "id":3,
  "ad_name":"Test Ad",
  "ad_text":"This is my ad text"
},
{
  "id":4,
  "ad_name":"Test Ad",
  "ad_text":"This is my ad text"
},
{
  "id":5,
  "ad_name":"Test Ad",
  "ad_text":"This is my ad text"
}
]

我正在使用 Jackson Library 来解析它,这是我的代码:

try {
        jParser = jfactory.createParser(array);

        while (jParser.nextToken() != JsonToken.END_ARRAY) {

            String fieldname = jParser.getCurrentName();

            if (fieldname != null) {

                if ("id".equals(fieldname)) {
                    jParser.nextToken();
                    if (jParser.getText() != null)
                        id = jParser.getText();

                    System.out.println(id);
                }

                if ("ad_name".equals(fieldname)) {
                    jParser.nextToken();
                    if (jParser.getText() != null)
                        ad_name = jParser.getText();

                    System.out.println(ad_name);
                }

                if ("ad_text".equals(fieldname)) {
                    jParser.nextToken();
                    if (jParser.getText() != null)
                        ad_text = jParser.getText();

                    System.out.println(ad_text);
                }
            }

        }

        jParser.close();
        return adsList;
    } catch (Exception e) {
        e.printStackTrace();
    }

我的解析和所有东西都工作正常。但是当我在日志中打印值时,我得到了重复的值,这意味着每个 JSONObject 都打印了两次。

我在这里错过了什么?我们将不胜感激。

最佳答案

您的 JSON 非常简单。您可以使用此示例轻松地将其反序列化为 Java POJO 对象。为数组项创建简单的 POJO。

class Ad {

    private int id;
    @JsonProperty("ad_name")
    private String name;
    @JsonProperty("ad_text")
    private String text;

        //getters, setters, toString()
}

现在,您可以像这样反序列化它:

ObjectMapper mapper = new ObjectMapper();

Ad[] array = mapper.readValue(json, Ad[].class);
System.out.println(Arrays.toString(array));

以上程序打印:

[Ad [id=1, name=Test Ad, text=This is my ad text], Ad [id=2, name=Test Ad, text=This is my ad text], Ad [id=3, name=Test Ad, text=This is my ad text], Ad [id=4, name=Test Ad, text=This is my ad text], Ad [id=5, name=Test Ad, text=This is my ad text]]

我想帮助您处理源代码,但还不完整。对我来说,您的源代码只打印一次每个属性。也许您的代码中有我们看不到的错误?

关于android - 使用 Jackson 库进行 JSON 解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19490017/

相关文章:

javascript - JSON/JavaScript : return INDEX of array object containing a certain property

json - @RequestBody无法与@JsonProperty一起使用

java - Jackson:如何在序列化过程中对 JsonNode 进行后处理?

javascript - 使用 json 内容对网格进行排序

java - 当 CONTENT_TYPE 为 application/json 时 Apache Camel 修改 JSON

java - Jackson JSON 处理器 : SerializationConfig. Feature.USE_ANNOTATIONS 设置为 false

java - 通过 Espresso 运行单元测试时,由于 'java.lang.ClassNotFoundException' 错误,仪器运行失败

android - 如何为图标启动器设置不同形状的图标?

java - Android libgdx : splash screen not showing immediately after launcher icon pressed

java - OnListItemClick 无法正常工作