0

I have i class (A) composed by an int and a List of my another object (B) composed only by int.

They are all relative getters and setters method. I can save correctly my firts object into a String but i have problem while try reading it. If the List of my object (A) is empty i have no problem and i can save and read correctly it, but if the List isn't empty i can save it correctly but i can't read it. Why??

ObjectMapper mapper = new ObjectMapper();
ObjectA a = mapper.readValue(StringUsedFor, ObjectA.class);

LogCat:

06-26 15:51:38.723: W/System.err(825): org.codehaus.jackson.map.JsonMappingException: No suitable constructor found for type [simple type, class core.B]: can not instantiate from JSON object (need to add/enable type information?)
06-26 15:51:38.723: W/System.err(825):  at [Source: java.io.StringReader@41223378; line: 1, column: 12] (through reference chain: core.ObjectA["b"])
06-26 15:51:38.763: W/System.err(825):  at org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromObjectUsingNonDefault(BeanDeserializer.java:746)
06-26 15:51:38.763: W/System.err(825):  at org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:683)
06-26 15:51:38.763: W/System.err(825):  at org.codehaus.jackson.map.deser.BeanDeserializer.deserialize(BeanDeserializer.java:580)
06-26 15:51:38.773: W/System.err(825):  at org.codehaus.jackson.map.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:217)
06-26 15:51:38.773: W/System.err(825):  at org.codehaus.jackson.map.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:194)
06-26 15:51:38.773: W/System.err(825):  at org.codehaus.jackson.map.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:30)
06-26 15:51:38.773: W/System.err(825):  at org.codehaus.jackson.map.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:299)
06-26 15:51:38.773: W/System.err(825):  at org.codehaus.jackson.map.deser.SettableBeanProperty$FieldProperty.deserializeAndSet(SettableBeanProperty.java:579)
06-26 15:51:38.773: W/System.err(825):  at org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:697)
06-26 15:51:38.783: W/System.err(825):  at org.codehaus.jackson.map.deser.BeanDeserializer.deserialize(BeanDeserializer.java:580)
06-26 15:51:38.783: W/System.err(825):  at org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:2732)
06-26 15:51:38.783: W/System.err(825):  at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1863)
06-26 15:51:38.793: W/System.err(825):  at com.a.MainActivity.readLibretto(MainActivity.java:145)
06-26 15:51:38.813: W/System.err(825):  at com.a.MainActivity.onCreate(MainActivity.java:40)
06-26 15:51:38.813: W/System.err(825):  at android.app.Activity.performCreate(Activity.java:5008)
06-26 15:51:38.813: W/System.err(825):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
06-26 15:51:38.823: W/System.err(825):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
06-26 15:51:38.823: W/System.err(825):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
06-26 15:51:38.834: W/System.err(825):  at android.app.ActivityThread.access$600(ActivityThread.java:130)
06-26 15:51:38.834: W/System.err(825):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
06-26 15:51:38.844: W/System.err(825):  at android.os.Handler.dispatchMessage(Handler.java:99)
06-26 15:51:38.844: D/dalvikvm(825): GC_CONCURRENT freed 385K, 7% free 8585K/9223K, paused 21ms+51ms, total 167ms
06-26 15:51:38.854: W/System.err(825):  at android.os.Looper.loop(Looper.java:137)
06-26 15:51:38.854: W/System.err(825):  at android.app.ActivityThread.main(ActivityThread.java:4745)
06-26 15:51:38.854: W/System.err(825):  at java.lang.reflect.Method.invokeNative(Native Method)
06-26 15:51:38.864: W/System.err(825):  at java.lang.reflect.Method.invoke(Method.java:511)
06-26 15:51:38.864: W/System.err(825):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
06-26 15:51:38.864: W/System.err(825):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
06-26 15:51:38.874: W/System.err(825):  at dalvik.system.NativeStart.main(Native Method)

Data input example:

int input first = 1; B second = new B(2,5);

Function correctly only if second is empty or null.

user2520969
  • 1,389
  • 6
  • 20
  • 30
  • Please show the `ObjectA` class. Also, please specify what Jackson version you are using. – fge Jun 26 '13 at 15:44
  • public A { private List b; private int c; } public B { private int d private int e; } the code to read is that who i insert above. Thank for help me :) – user2520969 Jun 26 '13 at 15:47
  • That code should be in the question! Also (I forgot that) please show sample inputs of what works and what doesn't. Plus the stacktraces! – fge Jun 26 '13 at 15:49
  • There is an [**edit**](http://stackoverflow.com/posts/17324600/edit) button below your question. Use it. Don't post code in comments (unless it's just one short line, and then, put it in backticks `\``). – jlordo Jun 26 '13 at 15:49
  • 1
    1.9.12 is antique! Use 2.2.x – fge Jun 26 '13 at 15:50
  • With 2.2 i have another error e the project don't compile the APK.. – user2520969 Jun 26 '13 at 15:54
  • You say you have a `List` but Jackson says "can not instantiate from JSON object" <-- you are lying to us :p Please show sample data input – fge Jun 26 '13 at 16:24
  • I have update the library, now i use the 2.2.1 – user2520969 Jun 26 '13 at 16:40
  • Please fge help me :) i am in your hands! – user2520969 Jun 26 '13 at 17:01

0 Answers0