JSON转为java对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSON转为java对象相关的知识,希望对你有一定的参考价值。

json "result":[name:"abc"],[name:"bde"],"msg":"YES"
以上json怎样解析成java对象
附:pulic class RM
private Name result;
private boolean msg;


public class Name
private string name;

参考技术A 开始看网上关于json的例子程序段,实验了一把发现结果和网上例子程序的结果不一致,后来发现使用json需要导入的jar包不全,只导入json-lib-2.2.2-jdk15.jar ,还需以下几个包:commons-beanutils-1.7.0.jarcommons-collections-3.2.jarcommons-lang.jarcommons-logging-1.1.jarezmorph-1.0.4.jar这时在测试得到了想要的结果Question q2 = new Question();q2.setId(2);q2.setDescription("descrsssss");q2.setPointInfo("pointkkkk");q2.setType(3);Question q1 = new Question();q1.setId(1);q1.setDescription("descrsssss");q1.setPointInfo("pointkkkk");q1.setType(3);JSONObject jsonObject = new JSONObject().fromObject(q2);System.out.println(jsonObject);List list = new ArrayList();list.add(q1);list.add(q2);JSONArray jsonArr= JSONArray.fromObject(list);System.out.println(jsonArr);输出:"description":"descrsssss","id":2,"pointInfo":"pointkkkk","type":3["description":"descrsssss","id":1,"pointInfo":"pointkkkk","type":3,"description":"descrsssss","id":2,"pointInfo":"pointkkkk","type":3]页面$.post("showQuestions?type="+type,null,callbackShowQuestions,"json");这时在回调函数的参数data获得的就是json转换后的js对象数组,以下标方式便可访问数组里的相应对象信息。 参考技术B 你这个应该不是标准的json字符串,
json转对象一般使用JSON.parseObject(jsonString, Object.class);
jsonString为json字符串
Object.class 其中的object为需要转换的对象追问

这是一个json对象,不是json串

追答

你提供的json串和java对象是不匹配的。是无法使用json方法转换的。不是你的提供的对象有问题。就是你提供的jion串有问题。你好好看看

追问

json串改为:
String message="\'result':[\'name\':"abc"],[\'name\':"bde"],\'msg\':\'SUCCEED\'";之后怎么解析

追答

根据你的java对象,你的json串应是:"result": "name": "bde","msg": "SUCCEED"

本回答被提问者采纳

怎么将数组转为json

要使用json来传输数据,必须将所承载的数据转换成json的格式。json的格式如下:

JSON建构于两种结构:
1. “名称/值”对的集合。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
2. 值的有序列表。在大部分语言中,它被理解为数组(array)。

这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。

JSON具有以下这些形式:
1.对象是一个无序的“‘名称/值’对”集合。一个对象以“”(左括号)开始,“”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。
例:"name":"张三","age":20,"birthday":"1982-07-20"
这是对象在json中的表示形式.即{"key1":"value1","key2":"value2",...}

2.数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。
例:["张三","李四","王五"]
这是数组在json中的表示形式.即[value1,value2,value3,....]

3.值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。

4.字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。

字符串(string)与C或者Java的字符串非常相似。

5.数值(number)也与C或者Java的数值非常相似。除去未曾使用的八进制与十六进制格式。除去一些编码细节。

注:你只要记住前两种形式就可以了。
注意:key一定要用引号,而value如果是字符串,也一定要用引号引起来。切记,有的系统中,只当双引号是有效的,而不认单引号。所以建议用双引号。
更多的格式内容请访问http://json.org/json-zh.html

以上说了json的表示形式,那么现在来看一下它的使用:
因为语言的不同,在action中对json的使用方式也不一样,但思路是一样的,那就是将json转换为对象或数组,我们这里只提及客户端的javascript中json的转换。你使用哪种语言,请参照本语言使用json的方式。
1.首先,在javascript中要获取前端页面中所有输入域的值,保存到数组或一个对象中。
2.将对象或数组转换成JSON格式。有一个js文件能让我们转换起来非常方便,就是prototype.js,导入这个文件后,使用(对象.toJSON())或(数组.toJSON()),这个对象或数组就被保存成为了JSON格式的数据
3.将这个JSON对象传入action中进行处理,然后返回。
4.如果返回的是一个json,那么各户端接收以后需要将json格式的数据转换为javascrip中的对象或数组。同样使用prototype.js,(json对象.evalJSON());好了,这样就转换成js中的对象或数组了。同样你也可以使用javascript中的eval函数进行转换。(eval(json对象)),这两种方式都可以效果是相同的,都是返回的javascript的对象或数组。你现在就可以在客户端的javascript中使用这个对象或数组了

注意:prototype.js与json.js可能会有冲突,建议只使用一种。当然在这里没有介绍json.js的使用,原因是prototype.js的功能已经十分强大,在使用prototype.js时,已经没有必要再使用json.js了
参考技术A 你没有说清楚你使用什么语言!
python:
如果datas是Python的原始数据,并且datas中没有非ascii码,可以使用如下语句转换为json格式:

import json
json.dumps(datas)

当datas中含有中文等非ascii字符时,可以使用如下参数:

json.dumps(datas, ensure_ascii=False)

如果想美化输出格式,可以使用indent参数:

json.dumps(datas, indent=4)

以上是关于JSON转为java对象的主要内容,如果未能解决你的问题,请参考以下文章

java 中json对象转为string类型

java对象转为json字符串

java复杂json字符串转为java对象

java利用反射将pojo转为json对象

JAVA中如何将一个json形式的字符串转为json对象?

json字符串怎么转换为java对象