当前位置: 首页 > 知识库问答 >
问题:

Spring RequestBody将JSON字符串映射到Point2D坐标

赏成益
2023-03-14
@PostMapping(value = "/classification", consumes = "application/json", produces = "application/json")
public ResponseEntity<String> getClassificationResults (
            @RequestBody Classification classification) {

     this.elasticSearchService.getSpatialData(classification);
  return ResponseEntity.ok(" ");
}
public class Classification {
    @JsonProperty
    private ArrayList<Point2D.Double> shapes;
    @JsonProperty
    private String [] colors;
    @JsonProperty
    private String [] pattern;
    @JsonProperty
    private Integer size;
...
}
"[[8.880321034663876,49.121984026160106], 
 [8.746452886806255,49.11327654230291], 
 [8.61786489671323,49.087497674922325],...]"

生成的对象不能是Point2D对象的ArrayList,而是任何类型的数组,它包含与示例相同的值--只是转换为number。

我必须指定我自己的Jackson反序列化器吗(我怎么做?)对于这个问题,还是改变分类构造函数就足够了?

共有1个答案

孟茂学
2023-03-14

您可以实现自定义反序列化程序,或者使用MixIn特性为Point2D类定义shape.array:

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.json.JsonMapper;

import java.awt.geom.Point2D;
import java.util.List;

public class JsonPathApp {

    public static void main(String[] args) throws Exception {
        JsonMapper jsonMapper = JsonMapper.builder()
                .addMixIn(Point2D.Double.class, Point2DDoubleMixIn.class)
                .build();

        String json = "[[8.880321034663876,49.121984026160106],[8.746452886806255,49.11327654230291],[8.61786489671323,49.087497674922325]]";

        TypeReference<List<Point2D.Double>> type = new TypeReference<List<Point2D.Double>>() {};
        List<Point2D.Double> shapes = jsonMapper.readValue(json, type);
        System.out.println(shapes);
    }
}

@JsonFormat(shape = JsonFormat.Shape.ARRAY)
interface Point2DDoubleMixIn { }

另见:

  • 指定形状。
 类似资料:
  • 我正试图利用谷歌电子表格(谷歌脚本)中的地图功能,使用API从Bittrex获取我的帐户硬币余额。这是我的JSON对象: 理想情况下,我希望根据结果中的键和使用每个对象数据的基础行自动填充标题行。我看到了spme解决方案如何为每种或更复杂的方式使用。但我想这可以通过映射来实现。下面是我如何映射顶行,但不知道如何映射值: 谷歌电子表格中的预期输出为

  • 问题内容: 我有一个JSON响应,我需要将对应的JSON字符串映射到特定的Response类,是否有任何工具或框架可以做到这一点。 响应类为: Json响应字符串为{“ 0”:{“ 0”:“ Rockey”,“ 1”:“ John”}} 我将Apache CXF Framework与Jettison一起使用,因为JSON Provider还使用JAXB将数据连接到低带宽客户端。 请注意,我要将数字

  • 很抱歉重复了这个问题,但我的问题是其他的。我有一个从json-string解析到map的JSON解析器方法。但是json-string有一个值,这个值也是json-string。大概是这样的: 因此,我的解析方法: 我在客户端得到响应: ?但是随后我得到一个错误,IDE告诉我,是一个字符串。 那么,我如何用我的UserData获得这个LinkedHashMap呢?对不起,为了我的英语。谢谢你。

  • 我有下面的结构,我想用MapStruct映射这个。 下面是mapstruct为toDTO方法生成的实现 下面是mapstruct为toEntity方法生成的实现 我的问题是方法只在文本不为空时设置注释。但是方法不检查空文本或空文本。因此,如果我在DTO中获得,它将创建一个新的comment对象并将文本设置为null。如何避免这一点?有人能解释一下这种行为并建议我正确的做法吗?谢了!

  • 问题内容: 我想创建一个地图,可以将其转换为json对象,例如 但是golang指定使用类型声明地图,因此我可以使用map [string] string或map [string] int。我如何创建上述的json对象? 注意:直到运行时或需要创建json对象时,我才知道需要哪些数据和/或类型。因此,我不能只创建像 问题答案: 您可以随时使用存储任何类型。如包装袋中的文件所述: 若要将JSON解组