json对象转vue json字符串转对象如何实现

还没有账号?
其他方式登录
滑动完成验证
重发验证码
手机短信验证码已发送,请查收!
您有一个400抵2000现金红包未使用!
客服热线 400-862-8862在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML、JSON等,JSON作为一个轻量级的数据格式比xml效率要高,XML需要很多的标签,这无疑占据了网络流量,JSON在这方面则做的很好,下面先看下JSON的格式,
JSON可以有两种格式,一种是对象格式的,另一种是数组对象,
{"name":"JSON","address":"北京市西城区","age":25}//JSON的对象格式的字符串
[{"name":"JSON","address":"北京市西城区","age":25}]//数据对象格式
从上面的两种格式可以看出对象格式和数组对象格式唯一的不同则是在对象格式的基础上加上了[],再来看具体的结构,可以看出都是以键值对的形式出现的,中间以英文状态下的逗号(,)分隔。
在前端和后端进行数据传输的时候这种格式也是很受欢迎的,后端返回json格式的字符串,前台使用js中的JSON.parse()方法把JSON字符串解析为json对象,然后进行遍历,供前端使用。
下面进入正题,介绍在JAVA中JSON和java对象之间的互转。
要想实现JSON和java对象之间的互转,需要借助第三方jar包,这里使用json-lib这个jar包,下载地址为:https://sourceforge.net/projects/json-lib/,json-lib需要commons-beanutils-1.8.0.jar、commons-collections-3.2.1.jar、commons-lang-2.5.jar、commons-logging-1.1.1.jar、ezmorph-1.0.6.jar五个包的支持,可以自行从网上下载,这里不再贴出下载地址。
json-lib提供了几个类可以完成此功能,例,JSONObject、JSONArray。从类的名字上可以看出JSONObject转化的应该是对象格式的,而JSONArray转化的则应该是数组对象(即,带[]形式)的。
一、java普通对象和json字符串的互转
java对象--》》字符串
java普通对象指的是java中的一个java bean,即一个实体类,如,
package com.cn.study.day3;
public class Student {
public String getName() {
public void setName(String name) {
this.name =
public String getAge() {
public void setAge(String age) {
this.age =
public String getAddress() {
public void setAddress(String address) {
this.address =
public String toString() {
return "Student [name=" + name + ", age=" + age + ", address="
+ address + "]";
上面是我的一个普通的java实体类,看json-lib如何把它转化为字符串形式,
public static void convertObject() {
Student stu=new Student();
stu.setName("JSON");
stu.setAge("23");
stu.setAddress("北京市西城区");
JSONObject json = JSONObject.fromObject(stu);
JSONArray array=JSONArray.fromObject(stu);
String strJson=json.toString();
String strArray=array.toString();
System.out.println("strJson:"+strJson);
System.out.println("strArray:"+strArray);
我定义了一个Student的实体类,然后分别使用了JSONObject和JSONArray两种方式转化为JSON字符串,下面看打印的结果,
strJson:{"address":"北京市西城区","age":"23","name":"JSON"}strArray:[{"address":"北京市西城区","age":"23","name":"JSON"}]
从结果中可以看出两种方法都可以把java对象转化为JSON字符串,只是转化后的结构不同。
JSON字符串--》》java对象
上面说明了如何把java对象转化为JSON字符串,下面看如何把JSON字符串格式转化为java对象,
首先需要定义两种不同格式的字符串,需要使用\对双引号进行转义,
public static void jsonStrToJava(){
String objectStr="{\"name\":\"JSON\",\"age\":\"24\",\"address\":\"北京市西城区\"}";
String arrayStr="[{\"name\":\"JSON\",\"age\":\"24\",\"address\":\"北京市西城区\"}]";
JSONObject jsonObject=JSONObject.fromObject(objectStr);
Student stu=(Student)JSONObject.toBean(jsonObject, Student.class);
JSONArray jsonArray=JSONArray.fromObject(arrayStr);
Object o=jsonArray.get(0);
JSONObject jsonObject2=JSONObject.fromObject(o);
Student stu2=(Student)JSONObject.toBean(jsonObject2, Student.class);
System.out.println("stu:"+stu);
System.out.println("stu2:"+stu2);
打印结果为:
stu:Student [name=JSON, age=24, address=北京市西城区]stu2:Student [name=JSON, age=24, address=北京市西城区]
从上面的代码中可以看出,使用JSONObject可以轻松的把JSON格式的字符串转化为java对象,但是使用JSONArray就没那么容易了,因为它有“[]”符号,所以我们这里在获得了JSONArray的对象之后,取其第一个元素即我们需要的一个student的变形,然后使用JSONObject轻松获得。
二、list和json字符串的互转
list--》》json字符串
public static void listToJSON(){
Student stu=new Student();
stu.setName("JSON");
stu.setAge("23");
stu.setAddress("北京市海淀区");
List&Student& lists=new ArrayList&Student&();
lists.add(stu);
JSONArray listArray=JSONArray.fromObject(lists);
System.out.println("listArray:"+listArray.toString());
我把使用JSONObject的方式给注掉了,我们先看注释之前的结果,
Exception in thread "main" net.sf.json.JSONException: 'object' is an array. Use JSONArray instead告诉我说有一个异常,通过查看源码发现,在使用fromObject方法的时候会先进行参数类型的判断,这里就告诉我们,传入的参数是一个array类型,因为使用的ArrayList,再来看,注释之后的结果,
listArray:[{"address":"北京市海淀区","age":"23","name":"JSON"}]这样结果是正常的。
json字符串--》》list
从上面的例子可以看出list的对象只能转化为数组对象的格式,那么我们看下面的字符串到list的转化,
public static void jsonToList(){
String arrayStr="[{\"name\":\"JSON\",\"age\":\"24\",\"address\":\"北京市西城区\"}]";
List&Student& list2=(List&Student&)JSONArray.toList(JSONArray.fromObject(arrayStr), Student.class);
for (Student stu : list2) {
System.out.println(stu);
Student[] ss =(Student[])JSONArray.toArray(JSONArray.fromObject(arrayStr),Student.class);
for (Student student : ss) {
System.out.println(student);
打印结果,
Student [name=JSON, age=24, address=北京市西城区]
Student [name=JSON, age=24, address=北京市西城区]
由于字符串的格式为带有“[]”的格式,所以这里选择JSONArray这个对象,它有toArray、toList方法可供使用,前者转化为java中的数组,或者转化为java中的list,由于这里有实体类进行对应,所以在使用时指定了泛型的类型(Student.class),这样就可以得到转化后的对象。
三、map和json字符串的互转
map--》》json字符串
public static void mapToJSON(){
Student stu=new Student();
stu.setName("JSON");
stu.setAge("23");
stu.setAddress("中国上海");
Map&String,Student& map=new HashMap&String,Student&();
map.put("first", stu);
JSONObject mapObject=JSONObject.fromObject(map);
System.out.println("mapObject"+mapObject.toString());
JSONArray mapArray=JSONArray.fromObject(map);
System.out.println("mapArray:"+mapArray.toString());
打印结果,
mapObject{"first":{"address":"中国上海","age":"23","name":"JSON"}}mapArray:[{"first":{"address":"中国上海","age":"23","name":"JSON"}}]
上面打印了两种形式。
json字符串--》》map
JSON字符串不能直接转化为map对象,要想取得map中的键对应的值需要别的方式,
public static void jsonToMap(){
String strObject="{\"first\":{\"address\":\"中国上海\",\"age\":\"23\",\"name\":\"JSON\"}}";
JSONObject jsonObject=JSONObject.fromObject(strObject);
Map map=new HashMap();
map.put("first", Student.class);
MyBean my=(MyBean)JSONObject.toBean(jsonObject, MyBean.class, map);
System.out.println(my.getFirst());
打印结果,
Student [name=JSON, age=23, address=中国上海]
下面是MyBean的代码,
package com.cn.study.day4;
import java.util.M
import com.cn.study.day3.S
public class MyBean {
public Student getFirst() {
public void setFirst(Student first) {
this.first =
使用toBean()方法是传入了三个参数,第一个是JSONObject对象,第二个是MyBean.class,第三个是一个Map对象。通过MyBean可以知道此类中要有一个first的属性,且其类型为Student,要和map中的键和值类型对应,即,first对应键 first类型对应值的类型。
阅读(...) 评论()js对象怎么转换为json字符串,在线等,谢谢-CSDN论坛
js对象怎么转换为json字符串,在线等,谢谢
js中定义了var&o&=&new&Object();
o.["RWLY"]&=&'sdfs';
var&o1=&new&Object();
o1.["RWLY"]&=&'sdfs';
var&arr&=&new&Array();
arr.push(o);
arr.push(o1);
现在就想把arr转换为json字符串,求大神。在线等,谢谢
百度说可以testJson&=&eval("("&+&arr&+&")");或者引用别的包
引用&1&楼&u&的回复:百度说可以testJson&=&eval("("&+&arr&+&")");或者引用别的包
这个说的json对象和json字符串之间的转换,上面不是json对象是js对象
eval可以,但是有安全性问题,IE8以上可以使用JSON.stringify
试试json.js包
&&var&str&=&JSON.stringify(arr)
引用&3&楼&longtian1213&的回复:eval可以,但是有安全性问题,IE8以上可以使用JSON.stringify
上面的问题我高定了,但是遇到新问题:把json字符串传递到后台,用java怎么解析成对象那??
上面的问题我高定了,但是遇到新问题:把json字符串传递到后台,用java怎么解析成对象那??
继续使用json解析&&jsonlib:
后台接受个字符串:
JSONArray&jsonArray&=&JSONArray.fromObject(string);
for&(int&i&=&0;&i&&&jsonArray.size();&i++)&{
&JSONObject&object&=&JSONObject.fromObject(jsonArray.get(i));
&XXXX&x=&(XXXX)&JSONObject.toBean(object,XXXX.class);
大概这样&&看看api
引用&5&楼&wangwuyilove&的回复:Quote: 引用&3&楼&longtian1213&的回复:
eval可以,但是有安全性问题,IE8以上可以使用JSON.stringify
上面的问题我高定了,但是遇到新问题:把json字符串传递到后台,用java怎么解析成对象那??
用json-lib呀
引用&6&楼&wangwuyilove&的回复:上面的问题我高定了,但是遇到新问题:把json字符串传递到后台,用java怎么解析成对象那??
还是一样的,解析这个json字符串,解析出来后一个一个set给对象&
前端js对象转成json字符串用json.js,后台json字符串转成java对象用json-lib
你可以尝试用一下谷歌的GsonJson对象与Json字符串互转(4种转换方式)
转载 &更新时间:日 16:16:44 & 投稿:whsnow
Json字符与Json对象的相互转换方式有很多,接下来将为大家一一介绍下,感兴趣的朋友可以参考下哈,希望可以帮助到你
1&jQuery插件支持的转换方式:
$.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象
2&浏览器支持的转换方式(Firefox,chrome,opera,safari,ie9,ie8)等浏览器:
JSON.parse(jsonstr); //可以将json字符串转换成json对象
JSON.stringify(jsonobj); //可以将json对象转换成json对符串
注:ie8(兼容模式),ie7和ie6没有JSON对象,推荐采用JSON官方的方式,引入json.js。
3&Javascript支持的转换方式:
eval('(' + jsonstr + ')'); //可以将json字符串转换成json对象,注意需要在json字符外包裹一对小括号
注:ie8(兼容模式),ie7和ie6也可以使用eval()将字符串转为JSON对象,但不推荐这些方式,这种方式不安全eval会执行json串中的表达式。
4&JSON官方的转换方式:
http://www.json.org/提供了一个json.js,这样ie8(兼容模式),ie7和ie6就可以支持JSON对象以及其stringify()和parse()方法;
可以在https://github.com/douglascrockford/JSON-js上获取到这个js,一般现在用json2.js。
PS:这里再为大家提供几款功能十分强大的json解析、转换与格式化工具供大家选择使用,相信对于大家接下来的json格式数据处理会有所帮助:
在线JSON代码检验、检验、美化、格式化工具:
在线XML/JSON互相转换:
json代码在线格式化/美化/压缩/编辑/转换工具:
C语言风格/HTML/CSS/json代码格式化美化工具:
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具json对象如何转化为字符串?
在程序开发中,我们经常使用到,而在json的使用中,其对象转化为字符串是常常遇到的操作,今天为大家介绍的就是json中对象转化为字符串的方法,一起来看看吧。
指将 Java 值转化为 JSON 字符串的过程。
JSON.stringify() 能够将 Java 值转换成 JSON 字符串。JSON.stringify() 生成的字符串可以用 JSON.parse() 再还原成 Java 值。
参数的含义
1)JSON.stringify(value[, replacer[, space]])
2)value:必选参数。被变换的 Java 值,一般是对象或数组。
3)replacer:可以省略。有两种选择:函数或数组。
①- 如果是函数,则每一组名称/值对都会调用此函数,该函数返回一个值,作为名称的值变换到结果字符串中,如果返回 undefined,则该成员被忽略。
②- 如果是数组,则只有数组中存在名称才能够被转换,且转换后顺序与数组中的值保持一致。
4)space:可以省略。这是为了排版、方便阅读而存在的。可以在 JSON 字符串中添加空白或制表符等。
value 用法
示例代码:
var obj = {
name : “Geoff Lui”,
console.log(obj);
var jsonstr = JSON.stringify(obj);
console.log(jsonstr);
控制台输出执行结果:
replacer 的用法
示例代码:
var obj = {
name : “Geoff Lui”,
console.log(obj);
var jsonstr = JSON.stringify(obj,fun);
function fun(name, value){
If (name == “age” )
value = 14;
console.log(jsonstr);
执行结果:
示例代码:
var obj = {
console.log(obj);
var jsonstr = JSON.stringify(obj,[“a”,”b”,”c”]);
console.log(jsonstr);
执行结果:
space 的用法 //排列的更加可读
示例代码:
var obj = {
console.log(obj);
var jsonstr = JSON.stringify(obj,[“a”,”b”,”c”], “one”);
console.log(jsonstr);
执行结果:
文章来源:麦子学院
原文链接:
责任编辑:
声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
为你量身定制PHP学习计划,老师在线教学PHP,学费便宜学费可分期,0利息,随时学
产品经理培训,口碑NO.1!学习更便捷!签协议保就业!
今日搜狐热点

我要回帖

更多关于 json字符串转json对象 的文章

 

随机推荐