javajson串查询的简单介绍
更新: <time datetime="2022-11-17 09:45">2022-11-17 09:45</time>
本文目录一览:
- 怎样在java中查询mysql得到如下的json格式的结果
- java中mongodb嵌套json查询?
- javaweb json字符串提取对象数据
- java解析json字符串数据
- 关于Java处理JSON字符串的新手问题
怎样在java中查询mysql得到如下的json格式的结果
Java中查询出来一般不会是JSON,都是Object。你要把Object返回给前端或者客户端的时候,用Jackson或者FastJSON把Object转换成JSON格式。不知道你想在哪用JSON,所以只能这么回答了。
java中mongodb嵌套json查询?
fastjson-1.1.2.jar 可以用这个jar包实现 java里面 json字符串和对象之间的互转
javaweb json字符串提取对象数据
在model层
public List<Map<String,String>> query() throws SQLException {
List<Map<String,String>> listmap = new ArrayList<Map<String,String>>();
Connection conn = null;
ResultSet rs = null;
String query = "SELECT * FROM COURSE";
Statement st = null;
conn = Conn.getConnection();
st = conn.createStatement();
rs = st.executeQuery(query);
while (rs.next()) {
Map<String, String> map = new HashMap<String, String>();
map.put("coursetypeid", rs.getString("COURSE_TYPE_ID"));
map.put("coursename", rs.getString("COURSE_NAME"));
map.put("publish", rs.getString("PUBLISH"));
map.put("publishtime", rs.getString("PUBLISH_TIME"));
map.put("coursenumber", rs.getString("CHAPTER_NUMBER"));
map.put("courseid", rs.getString("COURSE_ID"));
map.put("coursedesc", rs.getString("COURSE_DESC"));
listmap.add(map);
}
conn.close();
return listmap;
}
java解析json字符串数据
这个需要导入个jar包的,自己写太麻烦,而且要考虑特殊字符的转义的。
- json-lib是一个java类库,提供将Java对象,包括beans, maps, collections, java arrays and XML等转换成JSON,或者反向转换的功能。
- json-lib 主页 :
- 执行环境
需要以下类库支持
- 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
- 功能示例 这里通过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");
List<Person> 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}
]}
*/
List<Person> 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字符串的新手问题
第一点:你既然使用了net.sf.json.JSONObject
对象引入了jar包直接使用其的fromObject
将对象转为字符串效率更高,出错的概率也更小一些。
第二点:对象中套对象的方式也很简单,如这样
public static void main(String[] args) {
Map map1 = new HashMap();
Map map2 = new HashMap();
Map map3 = new HashMap();
map3.put("value", "Male");
map2.put("gender", map3);
map1.put("attributes", map2);
JSONObject json = JSONObject.fromObject(map1);
System.out.println(json);
}
第三点:将字符串解析回来。
Object obj2 = JSONObject.toBean(json, Map.class);
Map map = (Map) obj2;
MorphDynaBean map4 = (MorphDynaBean) map.get("attributes");
MorphDynaBean map5 = (MorphDynaBean) map4.get("gender");
String male = (String) map5.get("value");
System.out.println(male);
第四点: 可以参考:网页链接 或者百度搜索:java操作json数据之net.sf.json-lib 经验