Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
378 views
in Technique[技术] by (71.8m points)

java - Jackson - Deserialising JSON string - TypeReference vs TypeFactory.constructCollectionType

To deserialise JSON string to a list of class, different ways listed at StackOverflow question

Type 1 (docs link):

List<SomeClass> someClassList = mapper.readValue(jsonString, typeFactory.constructCollectionType(List.class, SomeClass.class));

Type 2 (docs link):

List<SomeClass> list = mapper.readValue(jsonString, new TypeReference<List<SomeClass>>() { });

Though both 2 types above do the job, what is the difference between these implementations ?

question from:https://stackoverflow.com/questions/11936620/jackson-deserialising-json-string-typereference-vs-typefactory-constructcoll

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

After constructing JavaType, both call same deserialization functionality, so the only difference is the way generic type is handled.

Second one is fully static, so type must be known in compile type, and can not vary. So it is similar to using basic Class literal.

First one is dynamic, so it can be used to construct things that vary regarding their parameterization.

Personally I prefer first alternative for all cases (it avoids creation of one more anonymous inner classes), but second one may be more readable.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...