日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

java list对象转json_java中List对象转换为JSON对象

發(fā)布時(shí)間:2023/12/20 javascript 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java list对象转json_java中List对象转换为JSON对象 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、什么是JSON

JSON 即 JavaScript Object Natation(Java對(duì)象表示法),它是一種輕量級(jí)的數(shù)據(jù)交換格式,非常適合于服務(wù)器與 JavaScript 的交互。

簡(jiǎn)而言之,JSON就是JavaScript交換數(shù)據(jù)的一種格式。例子如下:{"username":"coolcooldool","password":"1230","usertype":"superadmin"}{"list":[{"password":"1230","username":"coolcooldool"},{"password":"thisis2","username":"okokok"}]}第二種是有數(shù)組的情況,我也不用文字表述JSON到底是怎么構(gòu)成的了,相信長(zhǎng)眼睛的人都看懂了,哇咔咔!~二、為什么使用JSON而不是XML他們都是這樣說(shuō)的:盡管有許多宣傳關(guān)于 XML 如何擁有跨平臺(tái),跨語(yǔ)言的優(yōu)勢(shì),然而,除非應(yīng)用于 Web Services,否則,在普通的 Web 應(yīng)用中,開(kāi)發(fā)者經(jīng)常為 XML 的解析傷透了腦筋,無(wú)論是服務(wù)器端生成或處理 XML,還是客戶端用 JavaScript 解析 XML,都常常導(dǎo)致復(fù)雜的代碼,極低的開(kāi)發(fā)效率。實(shí)際上,對(duì)于大多數(shù) Web 應(yīng)用來(lái)說(shuō),他們根本不需要復(fù)雜的 XML 來(lái)傳輸數(shù)據(jù),XML 的擴(kuò)展性很少具有優(yōu)勢(shì),許多 AJAX 應(yīng)用甚至直接返回 HTML 片段來(lái)構(gòu)建動(dòng)態(tài) Web 頁(yè)面。和返回 XML 并解析它相比,返回 HTML 片段大大降低了系統(tǒng)的復(fù)雜性,但同時(shí)缺少了一定的靈活性。我認(rèn)為就是說(shuō):解析XML太費(fèi)勁了。三、如何使用當(dāng)然最直接的方法就是,你自己寫一個(gè)類,把你在數(shù)據(jù)庫(kù)中查到的list轉(zhuǎn)換成Sting,格式就是JSON樣子的就行,但前提是你比較牛叉,能很快寫出來(lái),并且是對(duì)的,對(duì)于我這么不牛叉的人來(lái)說(shuō),我選第二種方法。去網(wǎng)上找別人寫好的類,看一遍,拿過(guò)來(lái)用就好了。我目前找到了兩個(gè)類,都能達(dá)到效果,待我慢慢道來(lái)。1.在你的MyEclipse里新建一個(gè)Web Project,就叫Ajax_Json吧。2.新建一個(gè)類,名字叫做JsonUtil.java,打包到y(tǒng)oung.ajax.json,把下面代碼復(fù)制進(jìn)去。

packageyoung.ajax.json;

importjava.beans.IntrospectionException;

importjava.beans.Introspector;

importjava.beans.PropertyDescriptor;

importjava.math.BigDecimal;

importjava.math.BigInteger;

importjava.util.List;

importjava.util.Map;

importjava.util.Set;

importorg.apache.commons.logging.Log;

importorg.apache.commons.logging.LogFactory;

publicclassJsonUtil?{

privatestaticLog?log?=?LogFactory.getLog(JsonUtil.class);

publicstaticString?object2json(Object?obj)?{

StringBuilder?json?=?newStringBuilder();

if(obj?==null)?{

json.append("\"\"");

}?elseif(objinstanceofString?||?objinstanceofInteger?||?objinstanceofFloat

||?obj?instanceofBoolean?||?objinstanceofShort?||?objinstanceofDouble

||?obj?instanceofLong?||?objinstanceofBigDecimal?||?objinstanceofBigInteger

||?obj?instanceofByte)?{

json.append("\"").append(string2json(obj.toString())).append("\"");

}?elseif(objinstanceofObject[])?{

json.append(array2json((Object[])?obj));

}?elseif(objinstanceofList)?{

json.append(list2json((List>)?obj));

}?elseif(objinstanceofMap)?{

json.append(map2json((Map,??>)?obj));

}?elseif(objinstanceofSet)?{

json.append(set2json((Set>)?obj));

}?else{

json.append(bean2json(obj));

}

returnjson.toString();

}

publicstaticString?bean2json(Object?bean)?{

StringBuilder?json?=?newStringBuilder();

json.append("{");

PropertyDescriptor[]?props?=?null;

try{

props?=?Introspector.getBeanInfo(bean.getClass(),?Object.class).getPropertyDescriptors();

}?catch(IntrospectionException?e)?{}

if(props?!=null)?{

for(inti?=0;?i?

try{

String?name?=?object2json(props[i].getName());

String?value?=?object2json(props[i].getReadMethod().invoke(bean));

json.append(name);

json.append(":");

json.append(value);

json.append(",");

}?catch(Exception?e)?{}

}

json.setCharAt(json.length()?-?1,'}');

}?else{

json.append("}");

}

returnjson.toString();

}

publicstaticString?list2json(List>?list)?{

StringBuilder?json?=?newStringBuilder();

json.append("[");

if(list?!=null&&?list.size()?>0)?{

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

json.append(object2json(obj));

json.append(",");

}

json.setCharAt(json.length()?-?1,']');

}?else{

json.append("]");

}

returnjson.toString();

}

publicstaticString?array2json(Object[]?array)?{

StringBuilder?json?=?newStringBuilder();

json.append("[");

if(array?!=null&&?array.length?>0)?{

for(Object?obj?:?array)?{

json.append(object2json(obj));

json.append(",");

}

json.setCharAt(json.length()?-?1,']');

}?else{

json.append("]");

}

returnjson.toString();

}

publicstaticString?map2json(Map,??>?map)?{

StringBuilder?json?=?newStringBuilder();

json.append("{");

if(map?!=null&&?map.size()?>0)?{

for(Object?key?:?map.keySet())?{

json.append(object2json(key));

json.append(":");

json.append(object2json(map.get(key)));

json.append(",");

}

json.setCharAt(json.length()?-?1,'}');

}?else{

json.append("}");

}

returnjson.toString();

}

publicstaticString?set2json(Set>?set)?{

StringBuilder?json?=?newStringBuilder();

json.append("[");

if(set?!=null&&?set.size()?>0)?{

for(Object?obj?:?set)?{

json.append(object2json(obj));

json.append(",");

}

json.setCharAt(json.length()?-?1,']');

}?else{

json.append("]");

}

returnjson.toString();

}

publicstaticString?string2json(String?s)?{

if(s?==null)

return"";

StringBuilder?sb?=?newStringBuilder();

for(inti?=0;?i?

charch?=?s.charAt(i);

switch(ch)?{

case'"':

sb.append("\\\"");

break;

case'\\':

sb.append("\\\\");

break;

case'\b':

sb.append("\\b");

break;

case'\f':

sb.append("\\f");

break;

case'\n':

sb.append("\\n");

break;

case'\r':

sb.append("\\r");

break;

case'\t':

sb.append("\\t");

break;

case'/':

sb.append("\\/");

break;

default:

if(ch?>='\u0000'&&?ch?<='\u001F')?{

String?ss?=?Integer.toHexString(ch);

sb.append("\\u");

for(intk?=0;?k?<4-?ss.length();?k++)?{

sb.append('0');

}

sb.append(ss.toUpperCase());

}?else{

sb.append(ch);

}

}

}

returnsb.toString();

}

}

這應(yīng)該是一個(gè)高手自己寫的代碼,就是用剛才第一種方法的人,哈哈!這個(gè)類就能將你的幾乎所有類型轉(zhuǎn)換成JSON形式的字符串,你可以自己寫個(gè)類測(cè)試一下,我就不寫了。

吶,到現(xiàn)在為止,我們已經(jīng)有一種方法能將list型的東東轉(zhuǎn)換成為JSON形式的數(shù)據(jù)了。但是,偷偷的告訴你,還有一種方法,其實(shí)效果是一樣的,但是傳說(shuō)是官方的,所以用了會(huì)顯得比較專業(yè),比較牛叉所以我選了第二種,哇咔咔!

packageyoung.ajax.json;import

java.util.HashMap;

importjava.util.List;

importjava.util.Map;

importnet.sf.json.JSONArray;

importnet.sf.json.JSONException;

importnet.sf.json.JSONObject;

publicclassJsonConvert

{publicstaticJSONObject?message(String?message,booleansuccess)

{??????????Map?map?=newHashMap();

map.put("success",?success);

map.put("message",?message);

returnJSONObject.fromObject(map);

publicstaticJSONObject?generate(List?list)

{??????????Map?map?=newHashMap();

map.put("totalProperty",?list.size());

map.put("root",?list);

returnJSONObject.fromObject(map);

publicstaticJSONObject?javabean2json(Object?object,?String?message,booleansuccess)

{??????????Map?map?=newHashMap();

map.put("success",?success);

map.put("message",?message);

map.put("data",?object);

returnJSONObject.fromObject(map);

publicstaticJSONObject?objectcollect2json(List?list,?String?total)?{

Map?map?=newHashMap();

map.put("totalProperty",?total);

map.put("root",?list);

returnJSONObject.fromObject(map);

publicstaticJSONArray?getJSONArrayFormString(String?str)?{

if(str?==null||?str.trim().length()?==0)?{

returnnull;

JSONArray?jsonArray?=null;

jsonArray?=?JSONArray.fromObject(str);

}catch(JSONException?e)?{???????????e.printStackTrace();??????????}

returnjsonArray;?}

publicstaticJSONObject?StringToJSONOBject(String?str)?{

if(str?==null||?str.trim().length()?==0)

{returnnull;??????????}

JSONObject?jsonObject?=null;

try{???????????jsonObject?=?JSONObject.fromObject(str);

}catch(JSONException?e)?{???????????e.printStackTrace();??????????}

returnjsonObject;?}}

3.新建一個(gè)Java類,名字叫做JsonConvert.java,同樣打包到y(tǒng)oung.ajax.json,將下面代碼粘到里面。怎么樣,這個(gè)看著更專業(yè)吧,但是你現(xiàn)在發(fā)現(xiàn)了,有好多的可修正的紅叉叉啊,為什么哩?難道是類庫(kù)?Bingo!需要好一大堆包啊。。哎!我觀察了一下,我的里面有這么多包包,不排除有沒(méi)用上的哈。看到了嗎?這么多包包,自己去下吧,我就不給出地址了啊。。。本來(lái)想用圖片帶rar了,可惜,百度不讓。這些包可以從這些網(wǎng)站找到:如果你實(shí)在找不到,沒(méi)辦法,留郵箱吧。到這里,轉(zhuǎn)換的工作就完成了!你同樣可以編寫測(cè)試的類測(cè)試一下。4.新建一個(gè)Java類,名字叫做UserVO.java打包到y(tǒng)oung.ajax.model,將面面代碼粘到里面。

package young.ajax.model;

public class UserVO {

private String username;

private String password;

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

}

感覺(jué)這個(gè)代碼像高手寫的了嗎?yes你說(shuō)對(duì)了,是我寫的,哈哈!(其實(shí)大部分是MyEclipse生成的)

5.新建一個(gè)Servlet名字叫做JSONAction.java打包到y(tǒng)oung.ajax.action,將mapping里的訪問(wèn)地址改為/json,將下面代碼粘到里面。

package young.ajax.action;

import java.io.IOException;

import java.io.PrintWriter;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import net.sf.json.JSONObject;

import young.ajax.model.UserVO;

public class JSONAction extends HttpServlet {

public JSONAction() {

super();

}

public void destroy() {

super.destroy();

}

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

System.out.println("VVVVVVVVV"+request.getParameter("a"));

response.setContentType("application/json;charset=UTF-8");

PrintWriter out = response.getWriter();

List list = new ArrayList();

UserVO vo1 = new UserVO();

vo1.setUsername("coolcooldool");

vo1.setPassword("1230");

list.add(vo1);

UserVO vo2 = new UserVO();

vo2.setUsername("okokok");

vo2.setPassword("thisis2");

list.add(vo2);

Map map = new HashMap();

map.put("list",list);

JSONObject jso = JSONObject.fromObject(map);

System.out.println(jso);

out.print(jso);

out.flush();

out.close();

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

doGet(request,response);

}

public void init() throws ServletException {

}

}

6.在你的WebRoot下面新建文件夾js,下載JQuery的支持文件放在里面,你不用知道JQuery,這樣做就可以了,因?yàn)樽鲞@個(gè)的時(shí)候我正好也在玩JQuery.7.打開(kāi)你的index.jsp將下面代碼粘到里面。

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

利用JQuery+Ajax獲取JSON數(shù)據(jù)

$(function(){

$("#load").click(function(){

$("div").toggleClass("myc");

//$.get(

//"json",

//{a:1,b:2},

//function(data){

//alert(data);

//}

//);

$.ajax({

type:"get",url:"json",

data:"a=1&b=2&c=3",

dataType:"json",

success:function(data){

var items=data.list;

for(var i =0;i

{

var item=items[i];

//alert(item.username);

$("#tar").append("用戶名:"+item.username+"

密碼:"+item.password);

};

}

});

});

});

好了,啟動(dòng)測(cè)試,運(yùn)行效果如下。

總結(jié)

以上是生活随笔為你收集整理的java list对象转json_java中List对象转换为JSON对象的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。