java里的JSONObject作用是什么?什么时候用?

2025-01-05 16:38:11
推荐回答(5个)
回答1:

JsonObject 就是常说的 json。是一种重要的数据传输对象。其格式为{"key1":value1,"key2",value2....};key 必须是字符串。

因为ajax请求不刷新页面,但配合js可以实现局部刷新,因此json常常被用来作为异步请求的返回对象使用。

通过response.getWriter()获取PrintWriter pw,然后pw.print(json)。如果没有设置response.setContentType("application/json; charset=utf-8"); 则需要自己再js中进行解析。

扩展资料

Java中交互方式分为同步和异步两种:

同步交互:指发送一个请求,需要等待返回,然后才能够发送下一个请求,有个等待过程;

异步交互:指发送一个请求,不需要等待返回,随时可以再发送下一个请求,即不需要等待。

区别:一个需要等待,一个不需要等待,在部分情况下,项目开发中都会优先选择不需要等待的异步交互方式。

比如银行的转账系统,对数据库的保存操作等等,都会使用同步交互操作,其余情况都优先使用异步交互。



回答2:

JsonObject 就是常说的 json。

是一种重要的数据传输对象。

其格式为{"key1":value1,"key2",value2....};key 必须是字符串。

很像map对不对,一个key,一个value。

因为ajax请求不刷新页面,但配合js可以实现局部刷新,因此json常常被用来作为异步请求的返回对象使用。

通过response.getWriter()获取PrintWriter pw,然后pw.print(json)。

如果没有设置response.setContentType("application/json; charset=utf-8"); 

则需要自己再js中进行解析。

举例说明:

response.setContentType("application/json; charset=utf-8"); 
PrintWriter pw =  response.getWriter();
Student s = new Student(。。。);//反正就是构造一个对象,有没有数据无所谓
JSONObjet json = JSONObjet .from(s);//将s转化成json对象。
pw .print(json);
pw .flush();
pw .close();
这样这个json对象就传到你发送请求的那个jsp上面。
而$.post(url,datas.function(data){})这里的data就是后台返回的值,也就是这里的json
只需要 var json = data;//就获取到了。
再取得原来Student的属性 var name = json.name(student 的name 属性);

比较request.setAttribute("key",value);

这个必须配合forwoar来转发跳转到需要这个value的jsp页面。页面刷新。

回答3:

json就是一个字符串,只是有一个规范,可以用工具方便的转换成bean,jsonObject就是一个map,没有实体类时,就可以转成这东西

回答4:

JsonObject这个东西并不是和struts2或者其他框架有什么依赖,只是用来转换数据,将javabean转化成字符串或者将字符串转化成javabean。

回答5:

我写过这种代码,首先我觉得JSONObject和request.setAttribute()没有关系。JSONObject只是一种数据结构,可以理解为JSON格式的数据结构(key-value 结构),可以使用put方法给json对象添加元素。JSONObject可以很方便的转换成字符串,也可以很方便的把其他对象转换成JSONObject对象。
你们使用request.setAttribute()是同步返回数据吧?如何同步或者异步返回页面数据与数据结构没有关系。如果是同步返回数据,就使用request.setAttribute("key",jsonObject),如果是异步返回数据就使用流方式把jsonObject.toString 返回给页面。
我觉得使用JSONObject的好处就是可以减少自己定义的bean。在页面上也可以类似于对象的形式使用返回的数据。
对于你的第二个问题,如果我理解了你的意思,我觉得struts2 的属性驱动(直接定义参数使用get set方法获取参数)和模型驱动(使用bean 来获取参数)和JSONObject更不相干了,两者没关系的。