1

私の質問は本当に基本的なものです.FasterXML/Jackson Javaライブラリにnew Gson().toJson(Object)に相当するものはありますか?

はいの場合、どちらのパフォーマンスが優れていますか?

ありがとう

4

2 に答える 2

1

@Zuttyが提案したように:

ジャクソンでは new ObjectMapper().writeValueAsString(Object)

試してみましたが、com.fasterxml.jackson.databind.JsonMappingExceptionが発生します

com.fasterxml.jackson.databind.JsonMappingException: Direct self-reference leading to cycle (through reference chain: com.learnkeeper.shared.entities.RootBook["permissionRef"]->com.googlecode.objectify.impl.ref.LiveRef["key"]->com.googlecode.objectify.Key["root"])
at com.fasterxml.jackson.databind.ser.BeanPropertyWriter._handleSelfReference(BeanPropertyWriter.java:781)
at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:569)
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:666)
at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:156)
at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:575)
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:666)
at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:156)
at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:575)
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:666)
at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:156)
at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:129)
at com.fasterxml.jackson.databind.ObjectMapper._configAndWriteValue(ObjectMapper.java:3385)
at com.fasterxml.jackson.databind.ObjectMapper.writeValueAsString(ObjectMapper.java:2779)

new Gson ().toJson(Object)を使用すると、素敵なJsonが得られます。

{"id":4512395720392704,"origin":"FRENCH","target":"ENGLISH","wordKeys":[],"name":"Test","creation":"Aug 11, 2015 8:43:02 PM","modification":"Aug 11, 2015 8:43:02 PM","permissionRef":{"key":{"raw":{"kind":"Permission","id":6737807255011328}}},"lastVersion":true}

追加情報:ログに記録したいすべてのJava オブジェクトがjava.io.Serializableを実装しています

于 2015-08-11T10:50:50.013 に答える
1

takipi の人々は、gson と jackson の両方を含む、いくつかの json パーサーのパフォーマンス比較を行いました。解析されるドキュメントの種類に依存することがわかりました。Gson はドキュメントが小さいほど高速であり、jackson はドキュメントが大きいほど高速です。3 番目の選択肢である json.simple は、サイズの大きなドキュメントと小さなドキュメントの両方で、より一貫したパフォーマンスを提供します。

于 2015-08-11T11:19:14.897 に答える