java json转数组怎么把数据转成json 数组

JSON以及Java转换JSON的方法
我的图书馆
JSON以及Java转换JSON的方法
本文主要讲述如下几个内容:
1、JSON定义以及JSON的特性
2、如何在JavaScript中解释JSON格式数据
3、如何在Java代码中使用JSON(讲对象转换成JSON对象以及解释JSON字符串)
& &w3c上对JSON有比较详细的介绍,链接.下面仅讲述重要的几点。
Json是&JavaScript 对象表示法(JavaScript&Object&Notation),是轻量级的文本数据交换格式,具有层级结构(值中存在值),&数据可使用
AJAX 进行传输,独立于语言,具有自我描述性,比XML更小更快更容易解析。JSON格式字符串转化为JavaScript对象无需解析器,&JSON 使用 JavaScript 语法,使用JavaScript的eval()函数可生成JavaScript对象。
下面给出JSON格式的数据,非常清晰,无需多做解释,语法请阅读官方文档。
标准JSON格式数据
{ "firstName":"John" , "lastName":"Doe" }
标准JSON格式数组数据
"employees": [
{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" , "lastName":"Smith" },
{ "firstName":"Peter" , "lastName":"Jones" }
或直接赋值给变量:
var employees = [
{ "firstName":"Bill" , "lastName":"Gates" },
{ "firstName":"George" , "lastName":"Bush" },
{ "firstName":"Thomas" , "lastName": "Carter" }
二、在JavaScript中解释JSON数据
JSON 最常见的用法之一,是从 web 服务器上读取 JSON 数据(作为文件或作为 HttpRequest),将 JSON 数据转换为 JavaScript 对象,然后在网页中使用该数据。
下面直接给出代码示例:
[html] &pre&name="code"&class="html"&&html&&&&head&&&&/head&&&&script&type="text/javascript"&&&function&&testjson(){&&&&//Json格式的字符串&&var&txt&=&'{&"employees"&:&['&+&&'{&"firstName":"Bill"&,&"lastName":"Gates"&},'&+&&'{&"firstName":"George"&,&"lastName":"Bush"&},'&+&&'{&"firstName":"Thomas"&,&"lastName":"Carter"&}&]}';&&&&//使用eval函数转换成JSON对象&&//eval()&函数使用的是&JavaScript&编译器,可解析&JSON&文本,然后生成&JavaScript&对象。必须把文本包围在括号中,这样才能避免语法错误:&&var&obj&=&eval&("("&+&txt&&&&&&&+&")");&&//通过对象名,然后根据数组下标以及属性名取值&&alert(obj.employees[0].firstName);&&}&&&&&/script&&&&body&&&&&&&&a&href=""&onclick="testjson()"&Click&me!&/a&&&&/body&&&&/html&&&
直接保存为后缀名为html或htm的文件,用浏览器打开,就可以测试运行结果了。
三、Java操作JSON
1、Josn-lib
JSON-lib这个Java类包用于把bean,map和XML转换成JSON并能够把JSON转回成bean和DynaBean。
下载地址:http://json-lib.sourceforge.net/
还要需要的第3方包:
rg.apache.commons(3.2以上版本)
org.apache.oronet.sf.
ezmorph(ezmorph-1.0.4.jar)
下面直接给出代码:
[java] package&com.doyeden.&&&&import&java.util.ArrayL&&import&java.util.HashM&&import&java.util.L&&import&java.util.M&&&&import&org.apache.commons.beanutils.PropertyU&&&&import&net.sf.json.JSONA&&import&net.sf.json.JSONO&&import&net.sf.json.xml.XMLS&&&&public&class&TestJson&{&&&&&&public&static&void&main(String[]&args)&{&&&&&&&&&&&&//&1.&List&&&&&&&&&&boolean[]&booleanArray&=&new&boolean[]&{&false,&false,&true,&false&};&&&&&&&&&&JSONArray&ja&=&JSONArray.fromObject(booleanArray);&&&&&&&&&&System.err.println(ja);&&&&&&&&&&&&List&list&=&new&ArrayList();&&&&&&&&&&list.add("first");&&&&&&&&&&list.add("second");&&&&&&&&&&JSONArray&jsonArray2&=&JSONArray.fromObject(list);&&&&&&&&&&System.out.println(jsonArray2);&&&&&&&&&&&&JSONArray&jsonArray3&=&JSONArray.fromObject("['json','is','easy']");&&&&&&&&&&System.out.println(jsonArray3);&&&&&&&&&&&&//&2.&Map&&&&&&&&&&Map&map&=&new&HashMap();&&&&&&&&&&map.put("name",&"json");&&&&&&&&&&map.put("bool",&Boolean.TRUE);&&&&&&&&&&map.put("int",&new&Integer(1));&&&&&&&&&&map.put("arr",&new&String[]&{&"a",&"b"&});&&&&&&&&&&map.put("func",&"function(i){&return&this.arr[i];&}");&&&&&&&&&&JSONObject&json&=&JSONObject.fromObject(map);&&&&&&&&&&System.out.println(json);&&&&&&&&&&&&//&3.&JSON&Bean&&&&&&&&&&JSONObject&jsonObject&=&JSONObject.fromObject(new&JsonBean("kevin",&&&&&&&&&&&&&&&&&&"Male"));&&&&&&&&&&System.out.println(jsonObject);&&&&&&&&&&&&//&4.&Json&Beans&&&&&&&&&&List&JsonBean&&lbs&=&new&ArrayList&JsonBean&();&&&&&&&&&&JsonBean&j1&=&new&JsonBean("kevin",&"Male");&&&&&&&&&&JsonBean&j2&=&new&JsonBean("maimai",&"Femal");&&&&&&&&&&lbs.add(j1);&&&&&&&&&&lbs.add(j2);&&&&&&&&&&JSONArray&ja_beans&=&JSONArray.fromObject(lbs);&&&&&&&&&&System.out.println(ja_beans);&&&&&&&&}&&}&&
下面的类的get和set方法必须有才可以
[java] package&com.doyeden.&&&&public&class&JsonBean&{&&&&&&private&String&&&&&&&private&String&&&&&&&&&&&&&public&JsonBean()&{&&&&&&&&&&super();&&&&&&}&&&&&&public&JsonBean(String&name,&String&sex)&{&&&&&&&&&&super();&&&&&&&&&&this.name&=&&&&&&&&&&&this.sex&=&&&&&&&}&&&&&&public&String&getName()&{&&&&&&&&&&return&&&&&&&}&&&&&&public&void&setName(String&name)&{&&&&&&&&&&this.name&=&&&&&&&}&&&&&&public&String&getSex()&{&&&&&&&&&&return&&&&&&&}&&&&&&public&void&setSex(String&sex)&{&&&&&&&&&&this.sex&=&&&&&&&}&&&&&&&&}&&
程序运行结果:
[java] [false,false,true,false]&&["first","second"]&&["json","is","easy"]&&{"arr":["a","b"],"int":1,"name":"json","func":function(i){&return&this.arr[i];&},"bool":true}&&{"name":"kevin","sex":"Male"}&&[{"name":"kevin","sex":"Male"},{"name":"maimai","sex":"Femal"}]&&2、 目前比较流行的fast-json解析 ,更多fast-json请自行查阅文档
阿里巴巴FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分,它具备如下特征:
速度最快,测试表明,fastjson具有极快的性能,超越任其他的Java Json parser。包括自称最快的JackJson;
功能强大,完全支持Java Bean、集合、Map、日期、Enum,支持范型,支持自省;无依赖,能够直接运行在
Java SE 5.0以上版本;支持Android;开源 (Apache 2.0)
Fastjson API入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成。
public&static&final&Object
parse(String text);&//
把JSON文本parse为JSONObject或者JSONArray&
public&static&final&JSONObject
parseObject(String text);&//
把JSON文本parse成JSONObject&&&&
public&static&final&&T
parseObject(String text, Class clazz);&//
把JSON文本parse为JavaBean&
public&static&final&JSONArray
parseArray(String text);&//
把JSON文本parse成JSONArray&
public&static&final&&List
parseArray(String text, Class clazz);&//把JSON文本parse成JavaBean集合&
public&static&final&String
toJSONString(Object object);&//
将JavaBean序列化为JSON文本&
public&static&final&String
toJSONString(Object object,&boolean&prettyFormat);&//
将JavaBean序列化为带格式的JSON文本&
public&static&final&Object
toJSON(Object javaObject); 将JavaBean转换为JSONObject或者JSONArray。
& 实例代码:
(需要导入fastjson的jar包)
[java] package&com.doyeden.json.&&&&import&java.util.ArrayL&&import&java.util.L&&&&import&com.alibaba.fastjson.JSON;&&import&com.doyeden.json.JsonB&&&&public&class&Test&{&&&&&&public&static&void&main(String[]&args)&{&&&&&&&&&&&&&&&&&&&&//1&parse&bean&to&json&text&&&&&&&&&&JsonBean&jb=new&JsonBean("kevin","Male");&&&&&&&&&&System.out.println(JSON.toJSONString(jb));&&&&&&&&&&&&&&&&&&&&//2&parse&list&to&json&array&&&&&&&&&&List&JsonBean&&ljs=new&ArrayList&JsonBean&();&&&&&&&&&&JsonBean&jb1=new&JsonBean("kevin","Male");&&&&&&&&&&JsonBean&jb2=new&JsonBean("maimai","Female");&&&&&&&&&&ljs.add(jb2);&&&&&&&&&&ljs.add(jb1);&&&&&&&&&&System.out.println(JSON.toJSONString(ljs));&&&&&&&&&&&&&&&&&&&&//3&parse&json&text&to&bean&&&&&&&&&&String&s="{\"name\":\"greg\",\"sex\":\"Male\"}";&&&&&&&&&&JSON&jO=JSON.parseObject(s);&&&&&&&&&&JsonBean&j=JSON.toJavaObject(jO,&JsonBean.class);&&&&&&&&&&System.out.println(j.getName());&&&&&&&&&&&&&&&&}&&}&&
{"name":"kevin","sex":"Male"}
[{"name":"maimai","sex":"Female"},{"name":"kevin","sex":"Male"}]
3、其他方式,例如 org-lib等,使用方法跟上述两种方式非常相似。就不做更多介绍了。个人推荐还是使用fast-json。
总结:本文讲述了JSON格式数据以及如何在JavaScript和Java代码中操作JSON格式数据,可以发现,因为JSON自解释性,轻量级,体积小,跨平台等特点,JSON格式数据非常适合作为和后端数据交互的格式。JavaScript本身就可以解释JSON,这样就省去了很多第三方库,java中,关于讲JSON转换成Java对象以及讲Java对象和对象数组转换成JSON格式数据的类库其实有很多,但是目前来说最快的是fastjson.
TA的最新馆藏[转]&[转]&[转]&[转]&[转]&[转]&
喜欢该文的人也喜欢1.后台接收json数组转成封装实体类的List:
package no.integrasco.ingentia.news.
public class Person {
private int
public String getName() {
public void setName(String name) {
this.name =
public int getAge() {
public void setAge(int age) {
this.age =
package no.integrasco.ingentia.news.
import java.util.L
import net.sf.json.JSONA
import net.sf.json.JsonC
public class JsonTest {
* @param args
public static void main(String[] args) {
// 转换方法1
JSONArray array = JSONArray.fromObject("[{'name':'hehe','age':22}]");
List&Person& list = JSONArray.toList(array, Person.class);// 过时方法
System.out.println(list.get(0).getName());
// 转换方法2
List&?& list2 = JSONArray.toList(array, new Person(), new JsonConfig());//参数1为要转换的JSONArray数据,参数2为要转换的目标数据,即List盛装的数据
Person person = (Person) list2.get(0);
System.out.println(person.getAge());
2.从页面接收json格式的数据,在java类里面进行解析
String jsonStr = {"name":"zfj","dd":[{"ddr":"1","encrypt":"2","ff":"1","length":"23","ffe":"editStyled","ill":"1","pkor":"2","name":"zfj","isKey":"2","alias":"ffff"}],"addRelations":[{"type":"2","ld":"zfj","ld":"2"}]};
//将此字符串放在ruquest或者其他的变量里面,传递到后台。
//如放在reques中:
request.getRequestDispatcher("/geServlet?data="+jsonStr).forward(request,response);
//在servlet或java类里这样接收:
String json = request.ge[size=large][/size]tParameter("data");
JSONObject jsonObject = JSONObject.fromObject(data);
String name = jsonObject.getString(“name”);
//对于数组这样接收用
JSONArray jan = (JSONArray) jsonObject.get("dd");
if(jan!=null||jan.size()!=0){
for(int i=0;i&ja.size();i++){
JSONObject jo = JSONObject.fromObject(ja.get(i));
String ff = jo.getString("ff");
String jsonStr = {"name":"zfj","dd":[{"ddr":"1","encrypt":"2","ff":"1","length":"23","ffe":"editStyled","ill":"1","pkor":"2","name":"zfj","isKey":"2","alias":"ffff"}],"addRelations":[{"type":"2","ld":"zfj","ld":"2"}]};
//将此字符串放在ruquest或者其他的变量里面,传递到后台。
//如放在reques中:
request.getRequestDispatcher("/geServlet?data="+jsonStr).forward(request,response);
//在servlet或java类里这样接收:
String json = request.getParameter("data");
JSONObject jsonObject = JSONObject.fromObject(data);
String name = jsonObject.getString(“name”);
//对于数组这样接收用
JSONArray jan = (JSONArray) jsonObject.get("dd");
if(jan!=null||jan.size()!=0){
for(int i=0;i&ja.size();i++){
JSONObject jo = JSONObject.fromObject(ja.get(i));
String ff = jo.getString("ff");
阅读(...) 评论()Java二维数组转json的实现方法-java教程-PHP中文网QQ群微信公众号还没有收藏Java二维数组转json的实现方法这篇文章主要介绍了java实现二维数组转json的方法,涉及java数组遍历及json格式数据构造相关操作技巧,需要的朋友可以参考下本文实例讲述了java实现二维数组转json的方法。分享给大家供大家参考,具体如下:package T
public class erweiTojson {
public static void main(String[] args) {
String[][] blogList = {
{&&, &NetBeans New and Cool&, &Tim Boudreau&},
{&&, &NetBeans Mobility&, &Ada Li&},
{&&, &Creating Web 2.0 Rich Internet Applications&, &Michael Li&},
{&&, &AJAX and JSF&, &Ada Li&},
{&&, &Ruby on Rails in the Enterprise&, &Liang Ye&},
{&&, &Beans Binding and the Swing Application Framework&, &Joey Shen&}
StringBuffer sb = new StringBuffer();
boolean first =
sb.append(&[&);
for (int i = 0; i & blogList. i++) {
String[] blogItem = blogList[i];
if (!first) {
sb.append(&,&);
sb.append(&{&);
sb.append(&postdate: '& + blogItem[0] + &', &);
sb.append(&title: '& + blogItem[1] + &', &);
sb.append(&author: '& + blogItem[2] + &' &);
sb.append(&}&);
sb.append(&]&);
System.out.println(sb.toString());
}运行结果:复制代码 代码如下:[{postdate: '', title: 'NetBeans New and Cool', author: 'Tim Boudreau' },{postdate: '', title: 'NetBeans Mobility', author: 'Ada Li' },{postdate: '', title: 'Creating Web 2.0 Rich Internet Applications', author: 'Michael Li' },{postdate: '', title: 'AJAX and JSF', author: 'Ada Li' },{postdate: '', title: 'Ruby on Rails in the Enterprise', author: 'Liang Ye' },{postdate: '', title: 'Beans Binding and the Swing Application Framework', author: 'Joey Shen' }]以上就是Java二维数组转json的实现方法的详细内容,更多请关注php中文网其它相关文章!共3篇461点赞收藏分享:.php.cn&猜你喜欢PHP中文网:独家原创,永久免费的在线,php技术学习阵地!
All Rights Reserved | 皖B2-QQ群:关注微信公众号需要引入的JAR
&&&&&!--*.xls--&
&dependency&
&groupId&net.sourceforge.jexcelapi&/groupId&
&artifactId&jxl&/artifactId&
&version&2.6.8&/version&
&/dependency&
&dependency&
&groupId&com.alibaba&/groupId&
&artifactId&fastjson&/artifactId&
&version&1.2.7&/version&
&/dependency&
package com.taobao.
import com.alibaba.fastjson.JSONA
import com.alibaba.fastjson.JSONO
import jxl.C
import jxl.S
import jxl.W
import java.io.F
public class Excel {
public static void main(String[] args) {
Cell cell1, cell2, cell3, cell4, cell5;
JSONArray array = new JSONArray();
//为要读取的excel文件名
book = Workbook.getWorkbook(new File("D://b.xls"));
//获得第一个工作表对象(ecxel中sheet的编号从0开始,0,1,2,3,....)
sheet = book.getSheet(0);
for (int i = 1; i & sheet.getRows(); i++) {
//获取每一行的单元格
cell1 = sheet.getCell(0, i);//(列,行)
cell2 = sheet.getCell(1, i);
cell3 = sheet.getCell(2, i);
cell4 = sheet.getCell(3, i);
cell5 = sheet.getCell(4, i);
if ("".equals(cell1.getContents())) {//如果读取的数据为空
JSONObject object = new JSONObject();
object.put("ID",cell1.getContents());
object.put("编号",cell2.getContents());
object.put("姓名",cell3.getContents());
object.put("数量",cell4.getContents());
object.put("住址",cell5.getContents());
array.add(object);
System.out.println(array.toString());
book.close();
} catch (Exception e) {
e.printStackTrace();
b.xls文件:
使用 java 代码读取 excel 文件代码时报错如下:
jxl.read.biff.BiffException: Unable to recognize OLE stream&&& at jxl.read.biff.CompoundFile.&init&(CompoundFile.java:116)&&& at jxl.read.biff.File.&init&(File.java:127)&&& at jxl.Workbook.getWorkbook(Workbook.java:268)&&& at jxl.Workbook.getWorkbook(Workbook.java:253)& &
原因:不支出读取 excel 2007 文件(*.xlsx)。只支持 excel 2003 (*.xls)。
将b.xls转换为2003版就可以了。
[{"姓名":"张三","数量":"100","住址":"浙江省杭州市","ID":"1","编号":"1001"},{"姓名":"李四","数量":"200","住址":"湖北省武汉市","ID":"2","编号":"1002"},{"姓名":"王五","数量":"300","住址":"广东省深圳市","ID":"3","编号":"1003"},{"姓名":"赵六","数量":"400","住址":"湖南省长沙市","ID":"4","编号":"1004"}]
阅读(...) 评论()其他回答(3)
1.自己遍历,
2.linq语法,
这个东西就是几个循环的事情..跟第三方插件有什么关系?
园豆:25821
http://hi.baidu.com//item/6281861aab07
园豆:12944
有没有纯java代码写的
清除回答草稿
&&&您需要以后才能回答,未注册用户请先。

我要回帖

更多关于 java json转数组 的文章

 

随机推荐