1. json 解析 我该把下面代码怎么封装成对象, 这个 "orderProm": [ ] 应该写成什么类型, 谢谢
这是一个Cart对象春枣
里面有属性:
cartCount
checked
orderProm
payPrice
postage
savePrice
shopList
totalPrice
[] 是数组的形式,最简单的是辩森迹字符串数携并组,或者是对象数组
2. spring mvc 可以自动封装json对象吗
可以的
在web程序开发中,前端和服务器数据的传输方式常用的有两种,一种是以表单的形式提交,此时可以利用jquery的serialize()方法将表单内
容转为a=1&b=2&c=3&d=4&e=5这样的格式传输过去,接收端则可以用javabean直接接收。
还有一种方式是以json格式传输,接收时源宏若直接用bean接收则接收不到,此时应该用@RequestBody方式,需要注意的是接收的需要是json串,而不是json对象,可以在发送前使用JSON.stringify函数进行处理。
例子如下
客户端:
var url=path+'testConverter.html';
$.ajax(
{
url :
url,
type :
"POST",
dataType:"json",
contentType:'application/json;charset=UTF-8',
data:JSON.stringify({userId:'1',userName:'hello',password:'test',credits:'2',lastIp:'',lastVisit:'1986-05-27'}),
success :
function(data) {
alert(data.userName);
},
error:function(e){
alert("err");
}
服务端:
@RequestMapping(value="/testConverter.html")
@ResponseBody
public User
testConverter(@RequestBody User user)
{
System.out.println(user.getUserName());
user.setUserName("testname");
return
user;
}
上面例子中服务端返回的是个对象,@ResponseBody函数会自动将其转换为客户端要睁纯求的‘
dataType:"json",’格式。
最后需要注意的是
1,在xxx-serverlet配置文件中应该写上,以便可以使用
@ResponseBody和@RequestBody
2,发送时要写上 contentType:'application/json'
3,数组内容要用[]而不是list,用list会接收到一个map对象雹早册,而不是bean
3. json map对象怎么封装
用List还是比较难取的,不好定位,用Map定位值。
Map<beanA,Map<"beanA.属性名",beanB.值>> map = new HashMap<"beanA.Map<"beanA.属性名",beanB.值>>();
是想在页面显示吗版?用循环吧。权
<c:forEach items="${map}" var="m">
<c:forEach items="${m.key}" var="k">
<c:forEach items="${m.value}" var="v" >
<c:if test="${k.属性A名称} eq 'v.值A'}">
</c:if>
<c:if test="${k.属性B名称} eq 'v.值B'}">
</c:if>
</c:forEach>
</c:forEach>
</c:forEach>
4. 我在html将form 标签内的一个表格封装成 JSON对象,在后台怎么获得这个JSON对象
无论你是什么后台语言,对JavaScript对象都不能直接传送。办法也很简单,就是在JS里把JSON对象转换成JSON文本,即JSON.stringify(jsonObject)。但通过ajax或form提交到后台,然后在后台将接收到的JSON文本还原成后台语言对应的对象数据。还原工具因不同的后台语言而不同,对不同语言的JSON转换支持可详见json官网
5. java中如何将数据封装为JSON包
直接输出就可以了
String jsondata = "{'a':" + a + ",'b':" + b + ",'c':" + c + "}";
如果是字符串就加上单引号,如
String jsondata = "{'a':'" + a + "','b':'" + b + "','c':'" + c + "'}";
如果abc是数组
String jsondata = "{'a':[" + a[0] + "," + a[1] + "," + a[2] + "],'b':...}";
如果abc是对象就相对复杂一点
String jsondata = "{'a':{'a_paramStr':'" + a.paramStr + "','a_pramaInt'}:a.pramaInt},'b':...}";
当然,如果对象的成员变量很多,可以可以通过对象遍历的方式输出,还有包含子对象、子子对象的情况
总结如下
格式:{'数据名':数据值}
数据值为数字时,直接输出
数据值为字符串时,用单引号包含值,'数据值'
数据值为数组时,用中括号包含,[数据值1,数据值2,...]
数据值为对象时,用大括号包含,{'成员名1':成员数值1,'成员名2':{'成员2对象的成员1','成员2对象的成员1值'},...}
数据与数据之间用逗号隔开,以上
一句话,如果传送数据很简单可以自己输出;如果很复杂,乖乖用三方json包吧,我真不懂为什么抗拒别人做的车轮
6. json封装对象 报错
你从数据库返回的对象 只是一个实体,但是你转换成一个JSONARRAY这是不对的,应该转换成内JSONObject。只有返容回一个list集合时才能转换成JSONArray。你的报错信息显示是因为不能转换造成的。
应该这么写:
JSONObjectjson = JSONObject.fromObject(TblDevision);
System.out.println(json.toString());
7. 【JSON】JSON在前端和后端传递
后端:我们假定使用的是java语言
前端:毫无疑问是js
java语言:是一种强类型的语言,必须定义类型,然后生成实例;而js却不是,虽然它也是面向对象的,但是它并没有先定义类这一种概念(但是js也有类型),它是基于原型的一种模式,和java完全不同。很显然,二者的原理,机制,语法并不能兼容。二者产生的对象并不能被对方解读。再来看网络传输,通常就是http/tcp协议喽,使用的其实是请求-响应,再说白了即使字符串,不论后台传来的是什么类型的数据,也不论前台传回的什么类型的数据,网络层统统当作字符串处理,它也没有办法来解析类型啊!说到这里,前后台传数据也就只能用字符串了,那也就意味着它们各自都要完成一个转换过程,把要发送的转换成字符串,把要收到的字符串解析成自己的对象。因为传输的字符串会涉及前后台双方的解析和处理,所以双方都必须认识或者知道字符串该怎么转,也就是说,最好能有一种通用的规则来编辑,转换字符串,这个标准或者协议就是JSON,JSON就是用来交换数据的,是一种string,一种独立于平台的数据格式。
这样一来,前台就需要把自己的数据类型转成JSON,然后发给后台,后台在用JSON来解析数据,转换成自己的类型。后台传前台一样。那么,怎么把自己的数据转成JSON呢?
`JSON`对象可以通过JavaScript存取属性!JSON对象封装成JSON字符串经常用于前后台传输数据!
如果在前端使用,那么JSON对象可以通过 对象.属性名 来调用,如果是json字符串,那么只是字符串了!
在数据传输过程中,JSON是以文本、即字符串的形式传递的,而JavaScript操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键。
JSON字符串:var str = '{ name: 'xmt', sex: 'woman' }';
JSON对象: var str = { name: 'xmt', sex: 'woman' };
JSON字符串转化为JSON对象:var obj = JSON.parse(str) ;
JSON对象转化为JSON字符串:var str = JSON.stringify(obj);
8. 解析json数组,封装到三个对象.大神有啥好招没
使用 gsonT com.google.gson.Gson.fromJson(String json, Class<T> classOfT) throws JsonSyntaxException 方法
将EnterConsu Material Procts 分别封装为javaBean,再创建一个外围JavaBean,假如为ResBean.java,然后将前面三个作为ResBean 的版list 域,使用fromJson(jsonString,ResBean.class)即可得权到对应的bean对象
9. json字符串怎么封装成对象
下载这几个包,导入项回目,答 JSONObject obj= new JSONOjbect().fromObject(test); JSONObject json= new JSONOjbect().fromObject(obj.getObject("xxx")); System.out.println(json.getString("A")); System.out.println(json.getString("B"));
10. 如何处理常见的JSON嵌套结构
我们继续之前的话题。很多时候,服务器返回的JSON都不是一个“扁平”的结构,而是包含了各种嵌套,在这一节,我们就来处理如何把各种嵌套的情况,对应到Swift model。
第一种情况,是用对象封装数组,例如,服务器返回了多个视频信息的JSON:
为了把类似这种情况的JSON直接转型成model,我们只要定义下面这样的 struct 就好了:
这里,由于 EpisodeList 和 Episode 都是遵从 Codable 的,因此我们可以直接用之前的方式对JSON解码:
只是这次,对应的Model类型,变成了 EpisodeList 。执行一下,就能在控制台看到下面这样的结果:
第二种情况,服务器还可能直接返回一个数组,而不使用对象封装它:
对这种情况,我们无须声明任何新的类型,只要在解码的时候,指定一个数组类型就好了:
这次,我们就会看到这样的结果:
第三种情况,可以看成是前面两种情况的组合,假设数组中的对象,是通过一个Key索引的:
对于这种情况,数组内的结构,可以用 Dictionary<String: Episode> 表示,而整个JSON,则是这种 Dictionary 的数组,于是,在解码的时候,我们只要把这个类型传递给它就好了:坦罩
执行下,就会看到这样的结果:
在这一节最后,我们结合之前说过的这些情况,看一个更一般的例子,假设我们要给视频播放的页面传递一个包含所有要显示内容的JSON,它看上去是这样的:
为了把这段JSON自动转型成Swift model,我们新建一个 struct :
它对应JSON头部视频信息的部分,这里,由于视频难度属于视频信息的一部分,我们把 EpisodeLevel 定义成了一个内嵌正信升类型。
接下来,JSON的后半段,是系列中每一个视频的具体信息,这种情况我们已经处理过了,这里,举老我们把之前定义的类型整理一下:
可以看到,我们把 EpisodeType 也变成了 Episode 的内嵌类型。最后,我们定义一个表示页面数据的 struct :
这样, EpisodePage 就完全对应我们上面提到的JSON结构了,接下来,使用用 decode 方法解码就好:
执行一下,就能看到下面这样的结果了: