3 回答
TA贡献1788条经验 获得超4个赞
仅用于序列化端,但在此问题中,您可以这样做:
@Getter
@Setter
public class Entity {
private String name;
@JsonRawValue
private String descriptionJson;
@JsonProperty(value = "descriptionJson")
public void setDescriptionJsonRaw(JsonNode node) {
this.descriptionJson = node.toString();
}
}
TA贡献1841条经验 获得超3个赞
对于我的一项要求,我使用字段类型作为 Map 来按原样存储 Json。这样我就能够将嵌套的 JSOn 作为 Map 读取,当我将对象序列化为 JSON 时,它正确出现。下面是示例。
实体.java
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import java.util.HashMap;
import java.util.Map;
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class Entity {
public int id=0;
public String itemName="";
public Map<String,String> owner=new HashMap<>();
}
临时文件
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
public class Temp {
public static void main(String[] args){
ObjectMapper objectMapper= new ObjectMapper();
try {
Entity entity
=objectMapper.readValue(Temp.class.getResource("sample.json"), Entity.class);
System.out.println(entity);
String json=objectMapper.writeValueAsString(entity);
System.out.println(json);
} catch (IOException e) {
e.printStackTrace();
}
}
}
示例.json
{
"id": 1,
"itemName": "theItem",
"owner": {
"id": 2,
"name": "theUser"
}
}
TA贡献1834条经验 获得超8个赞
您可以ObjectMapper从 Jackson 2使用,如下所示:
ObjectMapper mapper = new ObjectMapper();
String jsonStr = "sample json string"; // populate this as required
MyClass obj = mapper.readValue(jsonStr,MyClass.class)
尝试在描述 json 的值中转义花括号。
添加回答
举报