You*_*ans 2 java spring json jackson objectmapper
考虑如下 Java 对象:
class User {
String name;
int age;
String locationJson; // this is a json already
//allArgsConstructor, getters & setters
}
Run Code Online (Sandbox Code Playgroud)
所以当我们这样做时
import com.fasterxml.jackson.databind.ObjectMapper;
....
User user = new User("Max", 13, "{\"latitude\":30.0000,\"longitude\":32.0000}");
new ObjectMapper().writeValueAsString(user)), String.class);
Run Code Online (Sandbox Code Playgroud)
我期待类似的事情:
{
"name": "Max",
"age": "13",
"locationJson": {"latitude":30.0000, "longitude":32.0000}
}
Run Code Online (Sandbox Code Playgroud)
相反,我将它作为一个 json 值包裹在双引号中,并用反斜杠跳过,因为它是双 json 化的- 如果这实际上是一个动词 -
{
"name": "Max",
"age": "13",
"locationJson": "{\"latitude\":30.0000, \"longitude\":32.0000}"
}
Run Code Online (Sandbox Code Playgroud)
我设法通过使用克服了这个问题@JsonRawValue
标记注释,指示应通过按原样包含属性的文字 String 值来序列化带注释的方法或字段,而不引用字符。这对于注入已在 JSON 中序列化的值或将 javascript 函数定义从服务器传递到 javascript 客户端非常有用。警告:根据您的输入值,生成的 JSON 流可能无效。
所以通过这样做,
import com.fasterxml.jackson.annotation.JsonRawValue;
....
class User {
String name;
int age;
@JsonRawValue
String locationJson; // this is a json already
//allArgsConstructor, getters & setters
}
Run Code Online (Sandbox Code Playgroud)
我有点告诉杰克逊,这是一个 json 值,已经不能完成你的工作了,所以帖子中的相同代码生成了正确的 json
{
"name": "Max",
"age": "13",
"locationJson": {"latitude":30.0000, "longitude":32.0000}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1806 次 |
| 最近记录: |