java定义一个json字符串,java生成json字符串

http://www.itjxue.com  2023-01-08 06:57  来源:未知  点击次数: 

java如何创建Json文件?

如果聊天数据的结构是固定的或变化不大的。

就直接“编排”json字符串。

为要输出的对象增加一个String toJSON()方法

StringBuilder b=new StringBuilder();

b.append("{ name:\"");

b.append(username);

b.append("\"}");

依次类推

return b.toString();

适合绝大多数情况。

补充:json是做交换格式,查询效率非常低,如果做存储的检索格式就误用了。

就是说“聊天信息的保存用json应该可以吧”还不如你之前的mysql数据库。

json用在客户端往服务端发送的通讯交换数据的格式上。服务端收到后转为数据库中或内存中存放。

怎样用java解析一个json字符串

public static void main(String[] args){

String temp="{'data':{'a':[{'b1':'bb1','c1':'cc1'},{'b2':'bb2','c2':'cc2'}]}}";

JSONObject jodata =JSONObject.fromObject(temp);

JSONObject joa =JSONObject.fromObject(jodata.get("data").toString());

JSONArray ja=JSONArray.fromObject(joa.get("a"));

for(int i=0;ija.size();i++){

JSONObject o=ja.getJSONObject(i);

if(o.get("b1")!=null){

System.out.println(o.get("b1"));

}

if(o.get("c1")!=null){

System.out.println(o.get("c1"));

}

if(o.get("b2")!=null){

System.out.println(o.get("b2"));

}

if(o.get("c2")!=null){

System.out.println(o.get("c2"));

}

}

}

注:要包含两个jar包ezmorph-1.0.6.jar和json-lib-2.2.2-jdk15.jar,jar包在附件中

java解析json字符串数据

这个需要导入个jar包的,自己写太麻烦,而且要考虑特殊字符的转义的。

1. json-lib是一个java类库,提供将Java对象,包括beans, maps, collections, java arrays and XML等转换成JSON,或者反向转换的功能。

2. json-lib 主页 :?

3.执行环境

需要以下类库支持

jakarta commons-lang 2.5

jakarta commons-beanutils 1.8.0

jakarta commons-collections 3.2.1

jakarta commons-logging 1.1.1

ezmorph 1.0.6

4.功能示例

这里通过JUnit-Case例子给出代码示例

??

package?com.mai.json;

import?static?org.junit.Assert.assertEquals;

import?java.util.ArrayList;

import?java.util.Date;

import?java.util.HashMap;

import?java.util.Iterator;

import?java.util.List;

import?java.util.Map;

import?net.sf.ezmorph.Morpher;

import?net.sf.ezmorph.MorpherRegistry;

import?net.sf.ezmorph.bean.BeanMorpher;

import?net.sf.json.JSONArray;

import?net.sf.json.JSONObject;

import?net.sf.json.util.JSONUtils;

import?org.apache.commons.beanutils.PropertyUtils;

import?org.junit.Test;

public?class?JsonLibTest?{

????/*

?????*??普通类型、List、Collection等都是用JSONArray解析

?????*??

?????*??Map、自定义类型是用JSONObject解析

?????*??可以将Map理解成一个对象,里面的key/value对可以理解成对象的属性/属性值

?????*??即{key1:value1,key2,value2......}

?????*?

?????*?1.JSONObject是一个name:values集合,通过它的get(key)方法取得的是key后对应的value部分(字符串)

?????*?????????通过它的getJSONObject(key)可以取到一个JSONObject,--?转换成map,

?????*?????????通过它的getJSONArray(key)?可以取到一个JSONArray?,

?????*?

?????*?

?????*/

????

????//一般数组转换成JSON

????@Test

????public?void?testArrayToJSON(){

????????boolean[]?boolArray?=?new?boolean[]{true,false,true};??

????????JSONArray?jsonArray?=?JSONArray.fromObject(?boolArray?);??

????????System.out.println(?jsonArray?);??

????????//?prints?[true,false,true]??

????}

????

????

????//Collection对象转换成JSON

????@Test

????public?void?testListToJSON(){

????????List?list?=?new?ArrayList();??

????????list.add(?"first"?);??

????????list.add(?"second"?);??

????????JSONArray?jsonArray?=?JSONArray.fromObject(?list?);??

????????System.out.println(?jsonArray?);??

????????//?prints?["first","second"]??

????}

????

????

????//字符串json转换成json,?根据情况是用JSONArray或JSONObject

????@Test

????public?void?testJsonStrToJSON(){

????????JSONArray?jsonArray?=?JSONArray.fromObject(?"['json','is','easy']"?);??

????????System.out.println(?jsonArray?);??

????????//?prints?["json","is","easy"]??

????}

????

????

????//Map转换成json,?是用jsonObject

????@Test

????public?void?testMapToJSON(){

????????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?jsonObject?=?JSONObject.fromObject(?map?);??

????????System.out.println(?jsonObject?);??

????}

????

????//复合类型bean转成成json

????@Test

????public?void?testBeadToJSON(){

????????MyBean?bean?=?new?MyBean();

????????bean.setId("001");

????????bean.setName("银行卡");

????????bean.setDate(new?Date());

????????

????????List?cardNum?=?new?ArrayList();

????????cardNum.add("农行");

????????cardNum.add("工行");

????????cardNum.add("建行");

????????cardNum.add(new?Person("test"));

????????

????????bean.setCardNum(cardNum);

????????

????????JSONObject?jsonObject?=?JSONObject.fromObject(bean);

????????System.out.println(jsonObject);

????????

????}

????

????//普通类型的json转换成对象

????@Test

????public?void?testJSONToObject()?throws?Exception{

????????String?json?=?"{name=\"json\",bool:true,int:1,double:2.2,func:function(a){?return?a;?},array:[1,2]}";??

????????JSONObject?jsonObject?=?JSONObject.fromObject(?json?);?

????????System.out.println(jsonObject);

????????Object?bean?=?JSONObject.toBean(?jsonObject?);?

????????assertEquals(?jsonObject.get(?"name"?),?PropertyUtils.getProperty(?bean,?"name"?)?);??

????????assertEquals(?jsonObject.get(?"bool"?),?PropertyUtils.getProperty(?bean,?"bool"?)?);??

????????assertEquals(?jsonObject.get(?"int"?),?PropertyUtils.getProperty(?bean,?"int"?)?);??

????????assertEquals(?jsonObject.get(?"double"?),?PropertyUtils.getProperty(?bean,?"double"?)?);??

????????assertEquals(?jsonObject.get(?"func"?),?PropertyUtils.getProperty(?bean,?"func"?)?);??

????????System.out.println(PropertyUtils.getProperty(bean,?"name"));

????????System.out.println(PropertyUtils.getProperty(bean,?"bool"));

????????System.out.println(PropertyUtils.getProperty(bean,?"int"));

????????System.out.println(PropertyUtils.getProperty(bean,?"double"));

????????System.out.println(PropertyUtils.getProperty(bean,?"func"));

????????System.out.println(PropertyUtils.getProperty(bean,?"array"));

????????

????????List?arrayList?=?(List)JSONArray.toCollection(jsonObject.getJSONArray("array"));

????????for(Object?object?:?arrayList){

????????????System.out.println(object);

????????}

????????

????}

????

????

????//将json解析成复合类型对象,?包含List

????@Test

????public?void?testJSONToBeanHavaList(){

????????String?json?=?"{list:[{name:'test1'},{name:'test2'}],map:{test1:{name:'test1'},test2:{name:'test2'}}}";

//????????String?json?=?"{list:[{name:'test1'},{name:'test2'}]}";

????????Map?classMap?=?new?HashMap();

????????classMap.put("list",?Person.class);

????????MyBeanWithPerson?diyBean?=?(MyBeanWithPerson)JSONObject.toBean(JSONObject.fromObject(json),MyBeanWithPerson.class?,?classMap);

????????System.out.println(diyBean);

????????

????????List?list?=?diyBean.getList();

????????for(Object?o?:?list){

????????????if(o?instanceof?Person){

????????????????Person?p?=?(Person)o;

????????????????System.out.println(p.getName());

????????????}

????????}

????}

????

????

????//将json解析成复合类型对象,?包含Map

????@Test

????public?void?testJSONToBeanHavaMap(){

????????//把Map看成一个对象

????????String?json?=?"{list:[{name:'test1'},{name:'test2'}],map:{testOne:{name:'test1'},testTwo:{name:'test2'}}}";

????????Map?classMap?=?new?HashMap();

????????classMap.put("list",?Person.class);

????????classMap.put("map",?Map.class);

????????//使用暗示,直接将json解析为指定自定义对象,其中List完全解析,Map没有完全解析

????????MyBeanWithPerson?diyBean?=?(MyBeanWithPerson)JSONObject.toBean(JSONObject.fromObject(json),MyBeanWithPerson.class?,?classMap);

????????System.out.println(diyBean);

????????

????????System.out.println("do?the?list?release");

????????ListPerson?list?=?diyBean.getList();

????????for(Person?o?:?list){

????????????Person?p?=?(Person)o;

????????????System.out.println(p.getName());

????????}

????????

????????System.out.println("do?the?map?release");

????????

????????//先往注册器中注册变换器,需要用到ezmorph包中的类

????????MorpherRegistry?morpherRegistry?=?JSONUtils.getMorpherRegistry();

????????Morpher?dynaMorpher?=?new?BeanMorpher(?Person.class,??morpherRegistry);??

????????morpherRegistry.registerMorpher(?dynaMorpher?);??

????????

????????

????????Map?map?=?diyBean.getMap();

????????/*这里的map没进行类型暗示,故按默认的,里面存的为net.sf.ezmorph.bean.MorphDynaBean类型的对象*/

????????System.out.println(map);

/*输出:

{testOne=net.sf.ezmorph.bean.MorphDynaBean@f73c1[

??{name=test1}

],?testTwo=net.sf.ezmorph.bean.MorphDynaBean@186c6b2[

??{name=test2}

]}

*/

????????ListPerson?output?=?new?ArrayList();??

????????for(?Iterator?i?=?map.values().iterator();?i.hasNext();?){??

????????????//使用注册器对指定DynaBean进行对象变换

???????????output.add(?(Person)morpherRegistry.morph(?Person.class,?i.next()?)?);??

????????}??

????????

????????for(Person?p?:?output){

????????????System.out.println(p.getName());

/*输出:

test1

test2

*/

????????}

????????

????}

????

????

????

}

java 怎么把数据json字符串

Java可以使用? fastjson、gson、Jackson或是其他类似的工具将Java对象转成json字符串(同时也可以将json格式转换成java对象)

demo: 将fastjson? jar包添加绑定到项目后,需要转换的地方使用如下代码

User?user?=?(User)?JSONObject.parse(jsonStr);?//?json?to?java

String?jsonStr?=?JSONObject.toJSONString(javaObject);?//?java?to?json

(责任编辑:IT教学网)

更多

推荐广告特效文章