第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

使用 Jackson 將 protobuf 轉(zhuǎn)換為 JSON?

使用 Jackson 將 protobuf 轉(zhuǎn)換為 JSON?

三國紛爭 2021-06-13 09:29:53
使用 Jackson 的 ObjectMapper 將 protobuf 轉(zhuǎn)換為 JSON 時(shí)出現(xiàn)以下錯(cuò)誤:com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Direct self-reference leading to cycle (through reference chain:MyObjectPb$MyObject["unknownFields"]->com.google.protobuf.UnknownFieldSet["defaultInstanceForType"])MyObjectPb 具有以下字段:protected com.google.protobuf.UnknownFieldSet unknownFields在處理現(xiàn)有代碼庫時(shí),我有以下限制:我無法修改 MyObjectPb 的源代碼,因此我無法在 MyObjectPb 中使用 Jackson 的 ignore 注釋。我也不能使用 Gson 的庫來轉(zhuǎn)換對象,因?yàn)榇a庫已經(jīng)使用 Jackson 進(jìn)行序列化。不建議添加新的依賴項(xiàng)。我如何告訴 Jackson 忽略(反)序列化 MyObjectPb 中的 UnknownFieldSet 對象?我嘗試了以下方法,但這些方法似乎無法解決問題:a) 配置 ObjectMapper:myObjectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);myObjectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);b) 使用 Jackson Mixin:@JsonIgnoreTypeprivate abstract class UnknownFieldSetIgnoreMixIn {}myObjectMapper.addMixIn(UnknownFieldSet.class, UnknownFieldSetIgnoreMixIn.class)
查看完整描述

3 回答

?
動(dòng)漫人物

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超10個(gè)贊

當(dāng)前序列化 protobuf 的方法(2018 年 10 月)是com.google.protobuf.util.JsonFormat按以下方式使用:


JsonFormat.printer().print(myMessageOrBuilder)

我@JsonSerialize(using = MyMessageSerializer.class)在 protobuf 對象之前使用了注釋并添加了這個(gè)類:


public static class MyMessageSerializer extends JsonSerializer<Message> {

    @Override

    public void serialize(Message message, JsonGenerator gen, SerializerProvider serializers) throws IOException {

        gen.writeRawValue(JsonFormat.printer().print(message));

    }

}

這允許 new ObjectMapper().writeValueAsString(wrapperObject)將我的 protobuf 正確轉(zhuǎn)換為 JSON。


查看完整回答
反對 回復(fù) 2021-06-17
?
慕絲7291255

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊

我使用 JsonFormat 類(com.googlecode.protobuf.format.JsonFormat)來轉(zhuǎn)換 protobuf:

new JsonFormat().printToString(myObject)

這對我來說非常完美。


查看完整回答
反對 回復(fù) 2021-06-17
?
炎炎設(shè)計(jì)

TA貢獻(xiàn)1808條經(jīng)驗(yàn) 獲得超4個(gè)贊

包含已從 更改com.googlecode.protobuf.format.JsonFormat 為 com.google.protobuf.util.JsonFormat

因此,如果您的 protobuf 依賴項(xiàng)缺少該format包,請嘗試JsonFormatutil.

有了這個(gè)包括,你應(yīng)該能夠使用

new JsonFormat().printToString(myObject)

正如@amad-person 所建議的那樣。


查看完整回答
反對 回復(fù) 2021-06-17
  • 3 回答
  • 0 關(guān)注
  • 816 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號