【问题标题】:Wrong conversion of 2 dimensional array二维数组的错误转换
【发布时间】:2013-04-26 14:38:51
【问题描述】:

我正在使用带有默认杰克逊映射器的球衣,如下所示:

@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.TEXT_PLAIN)
public String classify(@HeaderParam("training") boolean training, SamplePacket sp) {
...
}

示例数据包如下所示:

@XmlRootElement
public class SamplePacket {
private String id;
    private int[][] matrix;
    private int width;
    private int height;
    private String label;
    private int originalMatrixSize;

我的帖子数据如下所示:

    {"id":"web-1366985890725","matrix":[[161,195,90,197,126,168,126,212],
...
[169,199,101,200,135,177,135,217]],"width":320,"height":240,"originalMatrixSize":26}

问题是当我在 post(classify) 方法内的断点处停止时,我得到的 sp 对象包括所有正确的字段,除了矩阵具有正确大小的主数组但所有第二维数组长度为零。

我能做什么?最好不实现自定义映射器

【问题讨论】:

  • 您可以尝试使用 genson 库,您的矩阵案例应该可以开箱即用。

标签: json jersey jackson


【解决方案1】:

显然默认解析器需要这种语法:

{"height":"480","id":"No31 18:29:10 24/02/2013","label":"No","matrix":
[
{"item":["349","388","279","387","315","377","314","389"]}
["349","389","279","388","315","377","314","392"]},{"item":["349","388","279","387","315","377","314","390"]},{"item":["348","386","279","387","314","376","313","389"]},{"item":["348","387","278","386","314","376","314","389"]}],"originalMatrixSize":"32","width":"640"}

【讨论】:

  • 那么您很可能不会使用 Jackson 映射器 - 您的原始数据格式应该可以正常使用它。相反,您正在使用其他约定。要对此进行测试,您可以在 Jersey 之外创建 ObjectMapper 并验证独立行为;如果属实,请找出您不使用 Jackson POJO 映射的原因。
猜你喜欢
  • 2010-10-13
  • 1970-01-01
  • 1970-01-01
  • 2019-01-23
  • 2022-01-15
  • 2021-01-31
  • 2016-02-18
  • 2018-02-19
相关资源
最近更新 更多