我下面引用的数据来自你上面给出的 我看了你提供的代码,main方法中有些乱,主要是你不懂原理才显得很乱
这么说吧: 1> JSONObjectfromObject(obj) 是把obj对象转换成json字符串格式{key:value} 格式 2> JSONObjecttoBean(json字符串 , 对象); 是将json字符串格式数据赋值给 你指定的集合对象或Java对象, 这里它会根据你给定的json字符串里面的key的名称去找MyJson对象中与之匹配的属性名称 然后就是利用反射机制给对象赋值了,这个你就不用管理,反正是json包来做的 简而言之就是: json格式{key : value} 的key 去找java对象的属性名,然后赋值 不懂再问吧,我就说到这里了 重点是先理解原理,把原理先理解好了,再试着编码,这样才会 节约时间,提高效率 这个json包无非干的就是 1>把json字符串格式 转成 java 对象,也就把数据填入java对象中, 2> java 对象 转成 json字符串格式 罢了
String json1 = "{'myId':2,'name':'onename','fun':'true'}";
JSONObject json = JSONObjectfromObject(json1);
Systemoutprintln(json);
MyJson jo1 = (MyJson)JSONObjecttoBean(json, MyJsonclass);
Systemoutprintln(jo1getfun());
MyJson jo= new MyJson();
josetId(2);
josetName("onename");
josetfun("true");
JSONObject json11 = JSONObjectfromObject(jo);
Systemoutprintln(json11);
JSON 就是一种格式
不同类型的变量转换为JSON格式的方式稍有不同。
(1)将数值型、布尔型变量和函数对象转换为JSON格式非常简单,不需要做任何处理,
(2)将字符串型变量转换为JSON格式时,需要先处理其中的某些特殊字符。例如双引号、单引号和回车、换行符,将其替换为反斜杠"转义后
的字符,然后用引号将转换后的内容括起来。代码如下:
return(""""+objreplace(/(["""'])/g,"""$1")replace(/"r/,"""r")replace(/"n/,"""n")replace(/"t/,"""t")+"""");
(3)将日期时间型变量转换为JSON格式时,需要将其进行特殊处理,代码如下:
return("(new Date("""+objtoUTCString()+"""))");
(4)将正则表达式转换为JSON格式时,通过此对象的source获取其内容。不仅仅需要处理source中的特殊字符,还需要注意设置其
global,ignoreCase和multiline属性,代码如下:
return("(new RegExp("""+String(objsource)replace(/("W)/g,"""$1")+""",
"""+(objglobal"g":"")+(objignoreCase"i":"")+(objmultiline"m":"")+"""))");
(5)将数组对象转换为JSON格式时,递归调用toJSONString函数依次序列化其中的每个元素,然后将获得的各个字符串用逗号连接,在最外
围用方括号[]将其括起来,代码如下:
var re = new Array();
for(var i=0; i<objlength; i++)repush(toJSONString(obj[i]));
return("[" + rejoin(", ") + "]");
(6)将Object对象转换为JSON格式时,做法与数组对象类似,同样需要通过递归调用来依次处理其中的每个组成元素。此外,需要注意的
是,其组成元素序列化时,需要构成名值对的形式。
JSONObject Gson Xstream等等的类库都可以解析
请把你的json代码提交上来JSONObject object = new JSONObject(json);JSONObject root = objectgetJSONObject("root"); JSONObject data = rootgetJSONObject("data"); JSONArray list = datagetJSONArray("list");for(int i=0; i<listlength(); i++){ JSONObject entityObj = listgetJSONObject(i); JSONArray entitys = entityObjgetJSONArray("entity"); for(int j=0; j<entityslength(); j++){ JSONObject entity = entitysgetJSONObject(j); String date = entitygetString("取消日期"); } }引入jar,替换你的json直接可运行
以上就是关于用java解析json的时候程序没有报错,输出pro.MyJson@143bf3d,没有预期的json结构出来,是什么原因全部的内容,包括:用java解析json的时候程序没有报错,输出pro.MyJson@143bf3d,没有预期的json结构出来,是什么原因、如何使用Notepad++格式化json字符串、cjson数组如何解析等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)