2011-02-23 135 views
1

是否有人知道如何序列化和反序列化flexjson的对象数组列表?如何使用flexjson序列化和反序列化对象数组列表?

我曾尝试是这样的:

@GET 
@Produces(MediaType.APPLICATION_JSON) 
@Path("/getAllGeoData") 
public String getAllGeoData(){ 
    List<Object[]>l = geoMapService.getAllGeoData(); 

    return new JSONSerializer().serialize(l); 
} 

好吧..这工作,当我把这个web服务我得到以下结果:

[50.0830292,8.2387331],[50.0830292,8.2387331 ],[50.0752003,8.2397125]

在我的Android客户端我尝试反序列化该对象列表:

List<Object[]> l=new JSONDeserializer<List<Object[]>>().deserialize(jsonstring); 

,我得到以下execption:

02-23 09:45:30.911: WARN/dalvikvm(270): VFY: unable to resolve exception class 157 (Ljava/beans/IntrospectionException;) 
02-23 09:45:30.921: WARN/dalvikvm(270): VFY: unable to resolve exception class 157 (Ljava/beans/IntrospectionException;) 
02-23 09:45:30.921: WARN/dalvikvm(270): VFY: unable to find exception handler at addr 0x16a 
02-23 09:45:30.921: WARN/dalvikvm(270): VFY: rejected Lflexjson/ObjectBinder;.bindIntoObject (Ljava/util/Map;Ljava/lang/Object;Ljava/lang/reflect/Type;)Ljava/lang/Object; 
02-23 09:45:30.921: WARN/dalvikvm(270): VFY: rejecting opcode 0x0d at 0x016a 
02-23 09:45:30.931: WARN/dalvikvm(270): VFY: rejected Lflexjson/ObjectBinder;.bindIntoObject (Ljava/util/Map;Ljava/lang/Object;Ljava/lang/reflect/Type;)Ljava/lang/Object; 
02-23 09:45:30.931: WARN/dalvikvm(270): Verifier rejected class Lflexjson/ObjectBinder; 
02-23 09:45:30.941: WARN/dalvikvm(270): threadid=15: thread exiting with uncaught exception (group=0x4001b188) 
02-23 09:45:30.941: ERROR/AndroidRuntime(270): Uncaught handler: thread Thread-8 exiting due to uncaught exception 
02-23 09:45:30.951: ERROR/AndroidRuntime(270): java.lang.VerifyError: flexjson.ObjectBinder 
02-23 09:45:30.951: ERROR/AndroidRuntime(270):  at flexjson.JSONDeserializer.createObjectBinder(JSONDeserializer.java:169) 
02-23 09:45:30.951: ERROR/AndroidRuntime(270):  at flexjson.JSONDeserializer.deserialize(JSONDeserializer.java:149) 
02-23 09:45:30.951: ERROR/AndroidRuntime(270):  at com.mobilesociato.services.RemoteServiceGeoData$GeoDataThread.run(RemoteServiceGeoData.java:76) 
02-23 09:45:30.951: ERROR/AndroidRuntime(270):  at java.lang.Thread.run(Thread.java:1096) 

帮助,将不胜感激

问候

回答

0

它看起来像您所提供的flexjson包的版本与您的Android版本兼容。你有没有添加到应用程序的libs /目录?

Flexjson 2.1应该在Android上工作,根据to this(滚动到底部)。

由于org.json包是“内置”到Android中的,它会是一种可行的方式来使用该包吗?

+0

是的,我已将flexjson.jar添加到我的应用程序的libs /目录。我试过使用org.json包。但是,当我尝试反序列化数据时,我得到一个异常,即json字符串必须以“{” – 2011-02-23 09:33:21

+0

开头,我不知道现在要做什么... org.json不起作用.. flexjson不工作。序列化可能有问题吗?你知道除了flexjson以外的其他库,它使序列化变得容易吗? – 2011-02-23 09:35:23

+0

FJ 2.1应该按照主页工作。你可能使用产生'['或全局设置的旧/特殊版本? '['似乎不是有效的Json(请参阅http://en.wikipedia.org/wiki/JSON) – 2011-02-23 09:46:54

相关问题