json字符串转为Java对象请教

Json字符串格式为:[{'handleName':'查看','imgsrc':'../../images/folder_open.png','href':'initEditRole.act','args':'[{'argName':'role.id','propertyName':'id'}]','onclick':''},{'handleName':'删除','imgsrc':'../../images/folder_delete.png','href':'deletesRole.act','args':'[{'argName':'role.id','propertyName':'id'}]','onclick':'javascript:return confirm(\'是否确定删除?\');'}]
Json转换方法为:
public static Object getDTO(String jsonString, Class clazz, Map map){
JSONObject jsonObject = null;
try{
setDataFormat2JAVA();
jsonObject = JSONObject.fromObject(jsonString);
}catch(Exception e){
e.printStackTrace();
}
return JSONObject.toBean(jsonObject, clazz, map);
}

private static void setDataFormat2JAVA(){
//设定日期转换格式
JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(new String[] {"yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss"}));
}
实体类为:
public class Handles {
private String handleName;
private String imgsrc;
private String href;
private List<HandleArg> args;
private String onclick;

public String getHandleName() {
return handleName;
}
public void setHandleName(String handleName) {
this.handleName = handleName;
}
public String getImgsrc() {
return imgsrc;
}
public void setImgsrc(String imgsrc) {
this.imgsrc = imgsrc;
}
public String getHref() {
return href;
}
public void setHref(String href) {
this.href = href;
}
public List<HandleArg> getArgs() {
return args;
}
public void setArgs(List<HandleArg> args) {
this.args = args;
}
public String getOnclick() {
return onclick;
}
public void setOnclick(String onclick) {
this.onclick = onclick;
}
@Override
public String toString() {
return "Handles [args=" + args + ", handleName=" + handleName
+ ", href=" + href + ", imgsrc=" + imgsrc + ", onclick="
+ onclick + "]";
}
}

public class HandleArg {
private String argName;
private String propertyName;

public String getArgName() {
return argName;
}
public void setArgName(String argName) {
this.argName = argName;
}
public String getPropertyName() {
return propertyName;
}
public void setPropertyName(String propertyName) {
this.propertyName = propertyName;
}
}

异常信息为:

用这个JSON试试
[{'handleName':'查看','imgsrc':'../../images/folder_open.png','href':'initEditRole.act','args':[{'argName':'role.id','propertyName':'id'}],'onclick':''},{'handleName':'删除','imgsrc':'../../images/folder_delete.png','href':'deletesRole.act','args':[{'argName':'role.id','propertyName':'id'}],'onclick':'javascript:return confirm(\'是否确定删除?\');'}]

在[]外面不应该有引号追问

已经取掉,但是还是不行

追答

要不你用Gson试试,它有fromJson方法,比如
protected T fromInputJson(Class classOfT) throws Exception {
InputStream is = request.getInputStream();
String input = readInputStream(is);
T result = gson.fromJson(input, classOfT);
if (result == null) {
log.error("Bad Request");
}
return result;
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-02-05
:[{'handleName':'查看'
要用双引号 “handleName”:“查看”
如String s="[{“/handleName”/:“/查看”/}]"
第2个回答  2013-02-07
数组的话用JSONArray这个类来处理不是JSONObject
第3个回答  2013-02-05
加【】一个是数组追问

我就是想把args作为一个数组解析,在我的解释对应的实体类的时候已经把args定义为List集合;想请教到底我这个问题出现在哪里?

追答

json就是把java封装成数组,转换就行了

追问

我这个就是转换出错了,我是页面传JSON字符串,通过方法转换成实体类的集合

追答

通过一些打印 什么alert之类的 慢慢看吧 我也看不出来

从JSON 转 Java 实体的多种方法详解
首先,Google 提供的 Gson 库是一个强大的工具。通过定义与 JSON 结构匹配的 Java 类,你可以使用 Gson 的 fromJson 方法将 JSON 字符串转化为 Java 对象,反之亦然。例如:java String jsonString = ...;YourJavaClass yourObject = new Gson().fromJson(jsonString, YourJavaClass.class);其次...

怎么把json字符串转换成类对象
} 接下来,你可以使用Gson的fromJson()方法将JSON字符串转换为类对象:java String jsonString = "{\\"code\\": 200, \\"data\\": \\"Hello, World!\\"}";Gson gson = new Gson();ResponseModel response = gson.fromJson(jsonString, ResponseModel.class);这样,你已经成功将JSON字符串转换为Resp...

如何将json字符串转成带有对象引用的java对象
1、首先,加入如下 jar 文件到工程中:2、编写 java 代码,进行json 数据的转换 3、控制台输出结果如下所示:{"age":90,"houses":[],"id":1,"name":"liNing"} User [age=90, houses=[], id=1, name=liiNing]

如何把json树字符串转换为java list对象
json.getString(key);Object obj = new Gson().fromJson(json,Object.class);将这个object替换成你的javaBean

json和对象转换的实现方式有几种
1、从一个JSON 对象字符格式中得到一个java对象 请看下图,如下图所示 2、从一个JSON 对象字符格式中得到一个java对象 带上指定的日期格式 请看下图,如下图所示 3、从json HASH表达式中获取一个map 请看下图,如下图所示 4、从json数组中得到相应java数组 请看下图,如下图所示 5、从json数组...

Gson:Json数组——>Java对象
在系统设计过程中,前后台数据交互常见。通常,前端表单以POST请求传至后端,后端通过对象接收数据。然而,面对特定需求,前台数据的JSON数组中嵌套了数组和对象,如:数据结构包含数组与对象的嵌套,导致直接使用对象接收无法捕获List集合。此时,借助谷歌Gson库的fromJson方法,可将复杂JSON数据结构转化为Java中...

javajson解析,怎么把一串字符串里的某一个节点解析成对应
解析 JSON 字符串时,关键在于使用正确的工具和方法。Gson 是一个流行的 Java 库,专门用于 JSON 解析。它能帮助你轻松地将 JSON 字符串转换为你所需的对象。首先,加载原始 JSON 字符串。Gson 提供了 `JsonReader` 和 `JsonParser` 类,用于读取 JSON 字符流。你需要使用 `new JsonReader(new ...

json数组转java对象怎么转?
1、需要json的相关jar包 2、设置json格式字符串:String str="{\\"student\\":[{\\"name\\":\\"leilei\\",\\"age\\":23},{\\"name\\":\\"leilei02\\",\\"age\\":23}]}";3、建立相应的类:public class StudentList { List<Student> student;public List<Student> getStudent() { return student;}...

Java中Json、String、jsonObject、jsonArray格式之间的互相转换 (Fastjs...
在Java中,JSON处理是常见的数据交换方式,特别是在Fastjson和Gson库的支持下。以下是关于这些工具在JSON格式转换中的操作:Fastjson是阿里巴巴提供的强大库,用于处理JSON数据。以下是其基本操作:1.将JSON格式的字符串转换为JSONObject,便于按需访问各个属性:`String jsonString = ...; JSONObject json...

Java_JsonUtils工具类(Json类型转数组、list集合、对象、HashMap)_百...
JSON转HashMap:当JSON数据具有键值对结构时,JsonUtils支持将其解析为HashMap,这样可以方便地存储和检索数据。 对象转JSON:在需要将Java对象转换为JSON字符串时,JsonUtils同样能够完成这个任务,使得数据可以方便地在网络传输或存储时保持原格式。总的来说,JsonUtils工具类为Java开发者在处理JSON数据时...

相似回答