Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用Jackson将JSON对象反序列化到POJO_Android_Json_Jackson - Fatal编程技术网

Android 使用Jackson将JSON对象反序列化到POJO

Android 使用Jackson将JSON对象反序列化到POJO,android,json,jackson,Android,Json,Jackson,我正试图通过ObjectMapper在Android项目中使用Jackson 我的建议如下: public class Product { @JsonProperty("title") String title; @JsonProperty("vendor") String vendor; public void setTitle(String title){ this.title = title; } public void setVendor

我正试图通过ObjectMapper在Android项目中使用Jackson

我的建议如下:

public class Product {
    @JsonProperty("title")
    String title;
    @JsonProperty("vendor")
    String vendor;

    public void setTitle(String title){ this.title = title; }
    public void setVendor(String vendor){ this.vendor = vendor; }

    public String getTitle() { return title; }
    public String getVendor() { return vendor; }
}
我已经编写了一个单元测试,看看能否让Jackson对我的JSON对象进行反序列化

Context ctx;

public void setUp() throws Exception {
    super.setUp();
    ctx = getContext();
}

public void testConvertJSONToProduct() throws Exception {
    ObjectMapper m = new ObjectMapper();
    Product product = m.readValue(ctx.getAssets().open("foo.json"), Product.class);

    assertEquals("Macbook", product.getTitle());
}
我的实际JSON文件包含的信息比我在产品中设置的要多得多,但我只想让它正常工作。使用较大的文件可以创建产品,但其所有值都设置为null。我认为这可能是因为其中包含所有数据,因此我创建了另一个文件(foo.json),其中包含以下内容:

{"title" : "Macbook", "vendor" : "Apple"}

注意,您不需要这些@JsonProperty注释,因为您有表示“title”的getter和setter(根据bean命名约定)。无论哪种方式,代码都应该如您所示工作


我可能会首先验证ctxt.getAssets().open()是否不返回空内容?这是唯一突出的地方。

您使用的是哪种版本的杰克逊@JsonProperty只允许在版本1.0之后作为字段注释。jackson-(core/mapper)-asl-1.6.4I意识到我在运行测试时犯了一些错误,这是造成混乱的主要原因。我将把你的评论标记为正确,因为它确实澄清了jackson注释的正确用法。