- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我编写了一个 REST 服务来从发布请求中提取元数据。我正在使用 spring-data-elasticsearch,并且我制作了一个自定义元数据对象来将 Json 反序列化为如下所示:
@Document(indexName = "metadata_v1", type = "metadata")
public class Metadata {
@Id
private String id;
@Field(type = FieldType.String)
private String uuid;
@Field(type = FieldType.String)
private String userId;
@Field(type = FieldType.Date, format = DateFormat.basic_date_time)
private Date date = null;
@Field(type = FieldType.String)
private String classification;
@Field(type = FieldType.Nested)
private List<NumericKeyValue> numericKeyValue;
@Field(type = FieldType.Nested)
private List<TextKeyValue> textKeyValue;
有一堆 getter 和 setter。
它适用于除 numericKeyValue
和 textKeyValue
Json 数组之外的所有字段。我无法通过发布请求发送这些内容,并意识到我需要编写一个反序列化器。我对 numericKeyValue
这样做了,据我所知,它应该看起来像这样:
public class NumericKeyValueJsonDeserializer extends JsonDeserializer<List<NumericKeyValue>>{
@Override
public List<NumericKeyValue> deserialize(JsonParser jp, DeserializationContext ctxt)
throws IOException, JsonProcessingException {
TypeReference<List<NumericKeyValue>> typeRef = new TypeReference<List<NumericKeyValue>>(){};
ObjectMapper mapper = new ObjectMapper();
JsonNode root = jp.getCodec().readTree(jp);
String numericKeyValue = root.get("numericKeyValue").asText();
return mapper.readValue( numericKeyValue, typeRef);
}
}
我添加了
@JsonDeserialize(using = NumericKeyValueJsonDeserializer.class)
到我的元数据类中的字段声明。
但是,经过大量测试,我开始意识到 JsonNode root
不仅不包含 "numericKeyValue"
,而且给了我一个完全空的当我调用 root.asText()
时的字符串。
我一直在使用 Postman 向我的端点发送发布请求
@RequestMapping(value="/metadata_v1/ingest", method=RequestMethod.POST, consumes="application/json")
public @ResponseBody Metadata createEntry(@RequestBody Metadata entry){
repository.save(entry);
return entry;
}
包含以下 Json:
{
"numericKeyValue":
[
{
"key": "velocity",
"value": 55.5
},
{
"key": "angle",
"value": 90
}
]
}
我的映射如下所示:
"numericKeyValue" : {
"type" : "nested",
"properties" : {
"key" : {"type" : "string"},
"value" : {"type" : "double"}
}
}
如果需要的话我可以展示更多东西。我想如果我能以某种方式获取用 Java 发送的 JSON(也许是字符串形式),那就没问题了。我得到了导致空指针异常的空字符串,当我尝试 String numericKeyValue = jp.getText()
时,该字符串只是“[”的当前标记,我猜至少不是不是空字符串,但仍然对我没有帮助。
非常感谢任何帮助或建议。
最佳答案
在您的情况下,numericKeyValue
的值是一个数组。您应该替换以下行:
String numericKeyValue = root.get("numericKeyValue").asText();
与:
if ( root.isArray() ){
// loop trough array
for (final JsonNode node : root){
String numericKeyValue = node.get("numericKeyValue").asText();
// then build the list to be returned
}
}
关于java - 为什么 jsonParser.getCodec().readTree(jsonParser).asText() 为我返回一个空字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35183505/
SELECT LATITUDE, LONGITUDE, AsText(concat(LATITUDE,',' ,LONGITUDE)) AS point FROM inci
所以我试图在发布后验证一些有效负载。 有效负载 (JSON) 如下所示: {"value":"\"Hi there!\""} 然后我尝试将上面的内容转换为 JsonNode 并提取“value”的值。
我有一个将信息显示为 JSON (astext) 的程序。在 netbeans 控制台中,输出看起来不错,如下所示: ------------------------ | res1
我在 elm 0.15 中有一个 hello world 程序, import Text exposing (asText) main = asText "Hello" 在使用 elm-make h.
我编写了一个 REST 服务来从发布请求中提取元数据。我正在使用 spring-data-elasticsearch,并且我制作了一个自定义元数据对象来将 Json 反序列化为如下所示: @Docum
我尝试验证 JWT 身份验证 token , JWTVerifier verifier = JWT.require(Algorithm.HMAC256("secret")).withIssuer("s
我是一名优秀的程序员,十分优秀!