使用jackson

时间:2017-11-08 10:25:33

标签: android json jackson realm

使用jackson库将领域模型转换为json对象时获取未知密钥。

这是我的领域模型实例。

    public class RecordData extends RealmObject {

    public RecordData() {

    }

    private FormData formData;

    @Nullable
    @JsonProperty("values")
    private RealmList<Values> values;

    @Nullable
    @JsonProperty("value")
    private String value;
}

将领域模型转换为json对象的代码。

JSONObject recordDataJsonObject = new JSONObject(new ObjectMapper().writeValueAsString(formData.getRecordData()));

解析json的输出:

{"loaded":true,"managed":false,"valid":true,"value":"fdfdf","values":[]}

领域版本:io.realm:realm-gradle-plugin:4.1.1

Rxjava版本:'io.reactivex.rxjava2:rxjava:2.1.6'

杰克逊版:com.fasterxml.jackson.core:jackson-databind:2.8.6

为什么我会得到加载,管理和有效的布尔值?

3 个答案:

答案 0 :(得分:0)

从ObjectMapper写回复,你必须这样做:

public static String getJsonFromObject() {
        ObjectMapper objectMapper = ObjectMapperHelper.getObjectMapperInstance();
        String jsonString = null;
           try {
            jsonString = objectMapper.writeValueAsString(formData.getRecordData());
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        return jsonString != null ? jsonString : "";
    }

并在JsonObject中获取您的响应:

try {
    JSONObject jsonObject = new JSONObject().getJSONObject(getJsonFromObject());
     } catch (JSONException e) {
       e.printStackTrace();
       }

快乐的编码!!

答案 1 :(得分:0)

我已经使用Gson解析库解决了它。

arr[i] += arr[i+2]; 

它不会返回未知密钥。输出在这里。

JSONObject recordDataJsonObject = new JSONObject(new Gson().toJson(formData.getRecordData()));

希望如果你遇到同样的情况,你会找到这个解决方案。

答案 2 :(得分:0)

您可以使用@JsonIgnoreProperties({"loaded", "managed", "valid"}) public class RecordData extends RealmObject { public RecordData() { } private FormData formData; @Nullable @JsonProperty("values") private RealmList<Values> values; @Nullable @JsonProperty("value") private String value; } 注释:

@RealmClass public class RecordData implements RealmModel

另一种选择是使用{{1}}。