Javajava 数据库转json查询结果转Json,还能更简单吗

PHP中把数据库查询结果输出为json格式简单实例
投稿:junjie
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了PHP中把数据库查询结果输出为json格式简单实例,本文直接给出示例代码,都是非常基础的写法,大家应该一看就明白,需要的朋友可以参考下
include/conn.php为数据库链接文件,不会的网上搜索
include './include/conn.php'; //数据库链接文件
$sql_notice = mysql_query('SELECT * FROM gg_notice where enable = "1" limit 0,10');
$notice = mysql_fetch_array($sql_notice, MYSQL_ASSOC);
print_r ($notice);
&!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&
&html xmlns="http://www.w3.org/1999/xhtml"&
&title&第一php网提供的教程--将数据库读取的数据生成json格式&/title&
&meta http-equiv="Content-Type" content="text/ charset=utf-8" /&
&!-- &script src="/ajax/libs/jquery/1.4/jquery.min.js" type="text/javascript"/&&/script& --&
&script language=javascript&
&h1&请注意两种方法生成的对象数组在结构上的区别&/h1&
echo '&h1&法一&/h1&';
//假设以下数组是根据我们从数据库读取的数据生成的
$jarr=array('total'=&239,'row'=&array(
array('code'=&'001','name'=&'中国','addr'=&'Address 11','col4'=&'col4 data'),
array('code'=&'002','name'=&'Name 2','addr'=&'Address 12','col4'=&'col4 data'),
$jobj=new stdclass();//实例化stdclass,这是php内置的空类,可以用来传递数据,由于json_decode后的数据是以对象数组的形式存放的,
//所以我们生成的时候也要把数据存储在对象中
foreach($jarr as $key=&$value){
$jobj-&$key=$
print_r($jobj);//打印传递属性后的对象
echo '使用$jobj-&row[0][\'code\']输出数组元素:'.$jobj-&row[0]['code'].'&br&';
echo '编码后的json字符串:'.json_encode($jobj).'&br&';//打印编码后的json字符串
echo '&hr&';
echo '&h1&法二&/h1&';
echo '编码后的json字符串:';
echo $str=json_encode($jarr);//将数组进行json编码
echo '&br&';
$arr=json_decode($str);//再进行json解码
print_r($arr);//打印解码后的数组,数据存储在对象数组中
echo '使用$arr-&row[0]-&code输出数组元素:'.$arr-&row[0]-&
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具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方包:
mons(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&mons.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的最新馆藏[转]&[转]&[转]&[转]&[转]&[转]&java中怎么吧jdbc查询的resultset对象转为json
不知道怎么将查询结果转为json对象
使用的是json-simple 库
2014年 12月23日
(436 威望)
请输入验证码:
[captcha placeholder]
或 后不会被要求输入验证码。
请输入验证码:
&&&& 或 后不会被要求输入验证码。
一条记录 建议先封装成map 对象
多条几率 封装成 list&map&string,object&&
protected List&Map&String, Object&& fullToList(ResultSet rs) {
ArrayList result = new ArrayList();
int iColumn = rs.getMetaData().getColumnCount();
while (rs.next()) {
Map&String, Object& map = new LinkedHashMap&String, Object&();
for (int i = 1; i &= iC i++) {
String tmpkey = rs.getMetaData().getColumnName(i);// 通过索引找到行的名字
String[] tmps = tmpkey.split("_");// 分割所有含"_"字符,返回数组
String key = "";
for (int j = 0; j & tmps. j++) {
if (j == 0) {
key += tmps[j].toLowerCase();// 转换为小写
key += tmps[j].substring(0, 1).toUpperCase()
+ tmps[j].substring(1).toLowerCase();
Object val =
// switch行类型
switch (rs.getMetaData().getColumnType(i)) {
case Types.DATE:
val = rs.getDate(i);
case Types.DOUBLE:
if(rs.getObject(i)==null)
val = rs.getDouble(i);
case Types.NUMERIC:
if(rs.getObject(i)==null)
val = rs.getDouble(i);
case Types.DECIMAL:
if(rs.getObject(i)==null)
val = rs.getDouble(i);
case Types.INTEGER:
if(rs.getObject(i)==null)
val = rs.getInt(i);
val = rs.getString(i);
if (null != val) {
// map找找不到指定键便设置个
if (!map.containsKey(key)) {
map.put(key, val);
result.add(map);
} catch (Exception e) {
log.error(e.getMessage());
} finally {
if (rs != null)
rs.close();
} catch (SQLException e) {
log.error(e.getMessage());
protected Map&String, Object& fullToMap(ResultSet rs) {
Map&String, Object& map = new TreeMap&String, Object&();
int iColumn = rs.getMetaData().getColumnCount();
while (rs.next()) {
for (int i = 1; i &= iC i++) {
String tmpkey = rs.getMetaData().getColumnName(i);
String[] tmps = tmpkey.split("_");
String key = "";
for (int j = 0; j & tmps. j++) {
if (j == 0) {
key += tmps[j].toLowerCase();
key += tmps[j].substring(0, 1).toUpperCase()
+ tmps[j].substring(1).toLowerCase();
Object val =
switch (rs.getMetaData().getColumnType(i)) {
case Types.DATE:
val = rs.getDate(i);
val = rs.getString(i);
if (null != val) {
if (!map.containsKey(key)) {
map.put(key, val);
} catch (Exception e) {
log.error(e.getMessage());
} finally {
if (rs != null)
rs.close();
} catch (SQLException e) {
log.error(e.getMessage());
然后再将map 装成json
2014年 12月23日
(835 威望)
请输入验证码:
[captcha placeholder]
或 后不会被要求输入验证码。
提一个问题:
(760 威望)
2012年 12月31日
(459 威望)
2013年 9月14日
(853 威望)
2013年 1月16日
(619 威望)
2014年 7月9日
(758 威望)
欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。数据库查询 如何能返回这种嵌套JSON格式啊 (格式如下)_java吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:542,035贴子:
数据库查询 如何能返回这种嵌套JSON格式啊 (格式如下)收藏
{'regnum':'0001','company':'中信房地产公司','projectname':'奥林国际公寓二期F-02号住宅楼','account':'大庆房产局','subaccount':'002','subbank':'昆仑银行大庆分行','houses':[{'houseid':'','paytimes':'3','acceptstate':'验收','pdtls':[{'fundtype':'A016001','fundvalue':'','payee':'大庆城建公司','payeeaccount':'798','remark':'建设工程用款'},{'fundtype':'A016002','fundvalue':'','payee':'大庆城建公司','payeeaccount':'798','remark':'建设工程用款'}]}]}
上海java培训,汇道IT培训「实力教学」大专以上学员,0元入学,理论+实操,120天精通!汇道专注于JAVA培训,上海java培训,名师授课,免费试听,火热报名中,赶紧申请!
3Q 司马大大~
好纠结啊。。查询多表或单表都可以 只要是返回这种嵌套的。。。。
{'regnum':'0001','company':'中信房地产公司','projectname':'奥林国际公寓二期F-02号住宅楼','account':'大庆房产局','subaccount':'002','subbank':'昆仑银行大庆分行','houses':[{'houseid':'','paytimes':'3','acceptstate':'验收','pdtls':[{'fundtype':'A016001','fundvalue':'','payee':'大庆城建公司','payeeaccount':'798','remark':'建设工程用款'},{'fundtype':'A016002','fundvalue':'','payee':'大庆城建公司','payeeaccount':'798','remark':'建设工程用款'}]}]} 其实JSON就是一个现在用于网络传输中比较主流的自定义**,其理论和java的key-value形式的**是一模一样的....分析你的字符串....JSONObject jsoParent = new JSONObject();-------------------------------------------------{'regnum':'0001','company':'中信房地产公司','projectname':'奥林国际公寓二期F-02号住宅楼','account':'大庆房产局','subaccount':'002','subbank':'昆仑银行大庆分行', 这一段是直接以key-value的形式储存到jsoParent中的-------------------------------------------------,'houses':[{'houseid':'','paytimes':'3','acceptstate':'验收' houses这一key储存的又是一个JSONObject对象...命令为JsoHouses.----------------------------------------------------'pdtls':[{'fundtype':'A016001','fundvalue':'','payee':'大庆城建公司','payeeaccount':'798','remark':'建设工程用款'},{'fundtype':'A016002','fundvalue':'','payee':'大庆城建公司','payeeaccount':'798','remark':'建设工程用款'} pdtls这是属于houses中的,所以是JsoHouses的子项...然后你看 pdtls的vlaue是[{xxxx},{xxxxxxx]]形式的,所以 pdtls的子项是JSONArray类型,每个JSONArray类型又是JSONObject类型...--------------------------------这和map和list是一会是...map1中储存map2,map2中储存list,list中又储存map3..储存完数据之后..你把jsoParent.toString()就可以直接转换成你所想要的字符串了..
谢谢~ 有了很不错的灵感思路了
可以以对象形式查出来,再转成json格式
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或

我要回帖

更多关于 2016省市区数据库json 的文章

 

随机推荐