gpt4 book ai didi

java - Couchbase:如何从 Java 对象创建 JsonObject

转载 作者:搜寻专家 更新时间:2023-11-01 02:07:19 24 4
gpt4 key购买 nike

如何轻松地将 Java 对象转换/解析为 JSON 对象,即 com.couchbase.client.java.document.json.JsonObject 实例?

我试着这样做:

import com.couchbase.client.deps.com.fasterxml.jackson.annotation.JsonProperty;

public class MyClass {

@JsonProperty("filed")
private String filed;

public MyClass(String filed) {
this.filed = filed;
}

public String getFiled() {
return filed;
}

并使用导入运行这一行:

    import com.couchbase.client.deps.com.fasterxml.jackson.databind.ObjectMapper;
import com.couchbase.client.java.document.json.JsonObject;

ObjectMapper mapper = new ObjectMapper();
MyClass test = new MyClass("a");
JsonObject node = mapper.convertValue(test, JsonObject.class);

我得到:

    java.lang.IllegalArgumentException: Unrecognized field "filed" (class com.couchbase.client.java.document.json.JsonObject), not marked as ignorable (one known property: "names"])
at [Source: N/A; line: -1, column: -1] (through reference chain: com.couchbase.client.java.document.json.JsonObject["filed"])
at com.couchbase.client.deps.com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:2759)
at com.couchbase.client.deps.com.fasterxml.jackson.databind.ObjectMapper.convertValue(ObjectMapper.java:2685)

最佳答案

Couchbase 中的 JsonObject 是一个非常基本的 API,用于处理 JSON,接近 Map:您简单的值它,你从它getStringgetInt 等...

请注意,在 JsonObject 中只接受一组有限的类型:null、String、Integer、Long、Double、Boolean、JsonObject 或 JsonArray。

如果你想存储域对象,目前最受支持的方法是将它们编码为 JSON 字符串(使用你喜欢的 Jackson、GSon 等......)并使用 RawJsonDocument 存储和检索它们

从数据库中获取 JSON 字符串的示例:

RawJsonDocument doc = bucket.get("myKey", RawJsonDocument.class);
String jsonValue = doc.content();
MyClass value = unmarshalToMyClass(jsonValue); //this calls eg. Jackson

编辑:下面的技巧效果不是很好(例如,转换多头的问题)
但这里有一个技巧可以做您想做的事:有一个预配置的 Jackson ObjectMapper,您可以在 JacksonTransformers.MAPPER 中使用它!

关于java - Couchbase:如何从 Java 对象创建 JsonObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28807132/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com