真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java代碼json,java代碼例子

JSON 解析(java代碼)

import net.sf.json.JSONArray;

創(chuàng)新互聯(lián)是一家專業(yè)提供固鎮(zhèn)企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站制作、成都網(wǎng)站制作、H5頁面制作、小程序制作等業(yè)務(wù)。10年已為固鎮(zhèn)眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。

import net.sf.json.JSONObject;

public class Test {

public static void main(String[] args) {

String json = "你的json";

JSONArray array = JSONArray.fromObject(json);

JSONObject object = array.getJSONObject(0);

System.out.println(object.get("pm25"));

System.out.println(object.get("currentCity"));

System.out.println();

array = object.getJSONArray("");

for (Object obj : array) {

JSONObject o = JSONObject.fromObject(obj);

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

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

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

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

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

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

System.out.println();

}

array = object.getJSONArray("index");

for (Object obj : array) {

JSONObject o = JSONObject.fromObject(obj);

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

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

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

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

System.out.println();

}

}

}

java 如何解析JSON

一、JSON(JavaScriptObjectNotation)一種簡單的數(shù)據(jù)格式,比xml更輕巧。Json建構(gòu)于兩種結(jié)構(gòu):1、“名稱/值”對(duì)的集合(Acollectionofname/valuepairs)。不同的語言中,它被理解為對(duì)象(object),紀(jì)錄(record),結(jié)構(gòu)(struct),字典(dictionary),哈希表(hashtable),有鍵列表(keyedlist),或者關(guān)聯(lián)數(shù)組(associativearray)。如:{“name”:”jackson”,“age”:100}2、值的有序列表(Anorderedlistofvalues)。在大部分語言中,它被理解為數(shù)組(array)如:{“students”:[{“name”:”jackson”,“age”:100},{“name”:”michael”,”age”:51}]}二、java解析JSON步驟A、服務(wù)器端將數(shù)據(jù)轉(zhuǎn)換成json字符串首先、服務(wù)器端項(xiàng)目要導(dǎo)入json的jar包和json所依賴的jar包至builtPath路徑下(這些可以到JSON-lib官網(wǎng)下載:)然后將數(shù)據(jù)轉(zhuǎn)為json字符串,核心函數(shù)是:publicstaticStringcreateJsonString(Stringkey,Objectvalue){JSONObjectjsonObject=newJSONObject();jsonObject.put(key,value);returnjsonObject.toString();}B、客戶端將json字符串轉(zhuǎn)換為相應(yīng)的javaBean1、客戶端獲取json字符串(因?yàn)閍ndroid項(xiàng)目中已經(jīng)集成了json的jar包所以這里無需導(dǎo)入)publicclassHttpUtil{publicstaticStringgetJsonContent(StringurlStr){try{//獲取HttpURLConnection連接對(duì)象URLurl=newURL(urlStr);HttpURLConnectionhttpConn=(HttpURLConnection)url.openConnection();//設(shè)置連接屬性httpConn.setConnectTimeout(3000);httpConn.setDoInput(true);httpConn.setRequestMethod("GET");//獲取相應(yīng)碼intrespCode=httpConn.getResponseCode();if(respCode==200){returnConvertStream2Json(httpConn.getInputStream());}}catch(MalformedURLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}return"";}privatestaticStringConvertStream2Json(InputStreaminputStream){StringjsonStr="";//ByteArrayOutputStream相當(dāng)于內(nèi)存輸出流ByteArrayOutputStreamout=newByteArrayOutputStream();byte[]buffer=newbyte[1024];intlen=0;//將輸入流轉(zhuǎn)移到內(nèi)存輸出流中try{while((len=inputStream.read(buffer,0,buffer.length))!=-1){out.write(buffer,0,len);}//將內(nèi)存流轉(zhuǎn)換為字符串jsonStr=newString(out.toByteArray());}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}returnjsonStr;}}2、獲取javaBeanpublicstaticPersongetPerson(StringjsonStr){Personperson=newPerson();try{//將json字符串轉(zhuǎn)換為json對(duì)象JSONObjectjsonObj=newJSONObject(jsonStr);//得到指定jsonkey對(duì)象的value對(duì)象JSONObjectpersonObj=jsonObj.getJSONObject("person");//獲取之對(duì)象的所有屬性person.setId(personObj.getInt("id"));person.setName(personObj.getString("name"));person.setAddress(personObj.getString("address"));}catch(JSONExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}returnperson;}publicstaticListgetPersons(StringjsonStr){Listlist=newArrayList();JSONObjectjsonObj;try{//將json字符串轉(zhuǎn)換為json對(duì)象jsonObj=newJSONObject(jsonStr);//得到指定jsonkey對(duì)象的value對(duì)象JSONArraypersonList=jsonObj.getJSONArray("persons");//遍歷jsonArrayfor(inti=0;i

java中把json怎么轉(zhuǎn)換成數(shù)組?

使用原生的解析:

String json = "...";

//遍歷數(shù)組里的值,得到每個(gè)獨(dú)立的對(duì)象,然后獲取對(duì)應(yīng)的值設(shè)置到聲明好的對(duì)象中,最終創(chuàng)建對(duì)象完成后添加到集合中,如我自己代碼里的片段:

for (int j = 0; j array.length(); j++) {

obj = array.getJSONObject(j);

Data data = new Data();

mDataList.add(data);

}

數(shù)組聲明

在數(shù)組的聲明格式里,“數(shù)據(jù)類型”是聲明數(shù)組元素的數(shù)據(jù)類型,可以是java語言中任意的數(shù)據(jù)類型,包括簡單類型和結(jié)構(gòu)類型。“數(shù)組名”是用來統(tǒng)一這些相同數(shù)據(jù)類型的名稱,其命名規(guī)則和變量的命名規(guī)則相同。

數(shù)組聲明之后,接下來便是要分配數(shù)組所需要的內(nèi)存,這時(shí)必須用運(yùn)算符new,其中“個(gè)數(shù)”是告訴編譯器,所聲明的數(shù)組要存放多少個(gè)元素,所以new運(yùn)算符是通知編譯器根據(jù)括號(hào)里的個(gè)數(shù),在內(nèi)存中分配一塊空間供該數(shù)組使用。利用new運(yùn)算符為數(shù)組元素分配內(nèi)存空間的方式稱為動(dòng)態(tài)分配方式。

以上內(nèi)容參考:百度百科-數(shù)組

Java的json反序列化:Java數(shù)據(jù)類可以和json數(shù)據(jù)結(jié)構(gòu)不一致嗎?

由于時(shí)間關(guān)系我也沒有寫全,這里提供一個(gè)思路吧。代碼如下:

Account.java:

@Data

public class Account {

private int id;

private String name;

// @PowerfulAnnotation注解是我臆想的

@PowerfulAnnotation("token.id")

private String tokenId;

@PowerfulAnnotation("token.key")

private String key;

}

PowerfulAnnotation.java:

@Target(ElementType.FIELD)

@Retention(RetentionPolicy.RUNTIME)

@Documented

public @interface PowerfulAnnotation {

String value() default "";

}

測試類Main.java:

public class Main {

public static void main(String[] args) throws Exception {

Account account = new Account();

String ori = "{\n" +

"\"id\": 11111,\n" +

"\"name\": \"小李\",\n" +

"\"token\": {\n" +

"\"id\": 22222222,\n" +

"\"key\": \"ddddddddd\"\n" +

"}\n" +

"}";

Gson gson = new Gson();

//字符串json轉(zhuǎn)JsonObject

JsonObject jsonObject = gson.fromJson(ori, JsonObject.class);

//反射獲取目標(biāo)對(duì)象屬性

for (Field field : account.getClass().getDeclaredFields()) {

String fieldName = field.getName();

Class fieldClass = field.getType();

System.out.print("當(dāng)前field名:[" + fieldName + "],");

System.out.println("當(dāng)前field類型:[" + fieldClass + "]");

Annotation annotation = field.getDeclaredAnnotation(PowerfulAnnotation.class);

//檢查是否有PowerfulAnnotation注解

if (annotation != null) {

PowerfulAnnotation powerful = (PowerfulAnnotation) annotation;

String powerfulValue = powerful.value();

System.out.println("發(fā)現(xiàn)PowerfulAnnotation注解,值為:[" + powerfulValue + "]");

String[] tmp = powerfulValue.split("\\.");

//聲明一個(gè)臨時(shí)JsonObject,將用于獲取下一層json對(duì)象

JsonObject tmpJson = jsonObject;

for (int i = 0; i tmp.length; i++) {

//目標(biāo)值是在powerfulValue的最后一個(gè)字段,例如powerfulValue為token.id的話,目標(biāo)的值就是id,所以先獲取token這個(gè)jsonObject,并賦值給臨時(shí)tmpJson

if (i != tmp.length - 1) {

tmpJson = jsonObject.get(tmp[i]).getAsJsonObject();

} else {

//到達(dá)powerfulValue的最后一個(gè)字段,檢查其類型,并賦值給目標(biāo)對(duì)象

Object value = checkFieldType(tmpJson, tmp[i], fieldClass);

//從目標(biāo)對(duì)象中獲取目標(biāo)屬性

Field targetField = account.getClass().getDeclaredField(field.getName());

targetField.setAccessible(true);//解除私有限制

System.out.println("將[" + powerfulValue + "]的值[" + value + "]賦給目標(biāo)對(duì)象的[" + fieldName + "]");

//將值賦值給目標(biāo)屬性

targetField.set(account, value);

}

}

}

//屬性上沒有PowerfulAnnotation注解

else {

//檢查當(dāng)前屬性的類型

Object value = checkFieldType(jsonObject, fieldName, fieldClass);

//從目標(biāo)對(duì)象中獲取目標(biāo)屬性

Field targetField = account.getClass().getDeclaredField(field.getName());

targetField.setAccessible(true);//解除私有限制

System.out.println("直接將值[" + value + "]賦給目標(biāo)對(duì)象的[" + fieldName + "]");

//將值賦值給目標(biāo)屬性

targetField.set(account, value);

}

System.out.println("*********************************************\n");

}

System.out.println("目標(biāo)對(duì)象最終值:" + account);

}

/**

* 檢查當(dāng)前屬性的類型

* (這里由于時(shí)間關(guān)系,我沒有寫全,只檢查了String、int、boolean類型,全類型應(yīng)包括boolean、char、byte、short、int、long、float、double,你有時(shí)間自己補(bǔ)充一下)

*

* 如果發(fā)現(xiàn)當(dāng)前屬性是一個(gè)對(duì)象,那么應(yīng)該將JsonObject轉(zhuǎn)換成對(duì)應(yīng)的對(duì)象再返回(由于時(shí)間關(guān)系,這里我也沒有試過,總之思路是這樣)

*/

private static Object checkFieldType(JsonObject field, String fieldName, Class fieldClass) {

if (fieldClass == String.class) {

return field.get(fieldName).getAsString();

}

if (fieldClass == int.class) {

return field.get(fieldName).getAsInt();

}

if (fieldClass == boolean.class) {

return field.get(fieldName).getAsBoolean();

}

return new Gson().fromJson(field.get(fieldName), fieldClass);

}

}

代碼還沒寫完,主要集中在沒有對(duì)JsonArray進(jìn)行處理,當(dāng)json串里包含數(shù)組時(shí)會(huì)報(bào)錯(cuò),另外一些沒寫完的我在注釋里寫了點(diǎn),你可以參照一下。整體思路還是利用java反射機(jī)制進(jìn)行。

以上代碼運(yùn)行結(jié)果:

求java合并json數(shù)據(jù)的代碼

我想了一下,但是得有一個(gè)前提,就是第一個(gè)json數(shù)組的size必須和第二個(gè)json數(shù)組的size相同,并且一一對(duì)應(yīng),否則將造成數(shù)組溢出。

如果是基于上面這個(gè)前提,那么實(shí)現(xiàn)的方法就簡單了。

操作json對(duì)象,其實(shí)標(biāo)準(zhǔn)的方法是將實(shí)體類轉(zhuǎn)換成json后再操作,我這里的話為了便捷直接使用谷歌的Gson來創(chuàng)建JsonObject了,其他的json依賴還有阿里巴巴的FastJson等等,看你平時(shí)用什么習(xí)慣。

引入Gson依賴:

dependency

groupIdcom.google.code.gson/groupId

artifactIdgson/artifactId

version2.8.0/version

/dependency

實(shí)現(xiàn)代碼:

public class Main {

public static void main(String[] args) {

JsonArray jsonArray1 = new JsonArray();

JsonObject json11 = new JsonObject();

json11.addProperty("數(shù)據(jù)1", "0000");

json11.addProperty("數(shù)據(jù)2", "1111");

JsonObject json12 = new JsonObject();

json12.addProperty("數(shù)據(jù)1", "0000");

json12.addProperty("數(shù)據(jù)2", "1111");

JsonObject json13 = new JsonObject();

json13.addProperty("數(shù)據(jù)1", "0000");

json13.addProperty("數(shù)據(jù)2", "1111");

jsonArray1.add(json11);

jsonArray1.add(json12);

jsonArray1.add(json13);

System.out.println(jsonArray1);

JsonArray jsonArray2 = new JsonArray();

JsonObject json21 = new JsonObject();

json21.addProperty("數(shù)據(jù)3", "6666");

JsonObject json22 = new JsonObject();

json22.addProperty("數(shù)據(jù)3", "6666");

JsonObject json23 = new JsonObject();

json23.addProperty("數(shù)據(jù)3", "6666");

jsonArray2.add(json21);

jsonArray2.add(json22);

jsonArray2.add(json23);

System.out.println(jsonArray2);

//遍歷json數(shù)組,按位取出對(duì)象

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

JsonObject json1 = jsonArray1.get(i).getAsJsonObject();

JsonObject json3 = jsonArray2.get(i).getAsJsonObject();

//遍歷數(shù)據(jù)3內(nèi)容,通過Entry獲取數(shù)據(jù)3的key和value,并合并到數(shù)據(jù)1中

for (Map.EntryString, JsonElement item : json3.entrySet()) {

json1.addProperty(item.getKey(), item.getValue().getAsString());

}

}

System.out.println(jsonArray1);

}

}

整體思路為:遍歷兩個(gè)json數(shù)組,按位進(jìn)行合并操作。合并時(shí),遍歷數(shù)據(jù)3的jsonObject,獲取其key和value,并將其合并到數(shù)據(jù)1中即可。

運(yùn)行結(jié)果:

java中json怎么運(yùn)用?

json一般都是配合ajax一起使用的 我做做過的小例子 粘給你 你可以研究一下

js部分

//獲取卡的金額

function get_money(){

var str=document.getElementById("pk_card_type").value;

//alert(str);

var url = '/member_h.do';

var pars = 'method=getMoney';

pars+='pk_card_type='+str;

var ajax = new Ajax.Request(

url,

{method:'post',parameters:pars,onComplete:show_money}

);

}

//回調(diào)函數(shù) 寫入卡的金額

function show_money(dataResponse)

{

var data = eval('(' + dataResponse.responseText + ')');

var price=0;

price=data.price;

var collection_fees=0;

collection_fees=data.collection_fees;

document.getElementById("recharge").value=price;

document.getElementById("collection_fees").value=collection_fees;

}

action部分

public ActionForward getMoney(ActionMapping mapping, ActionForm form,

HttpServletRequest request, HttpServletResponse response) {

response.setContentType("text/html; charset=utf-8");

try {

IElementaryFileService ggsv = new ElementaryFileService();

String pk_card_type = request.getParameter("pk_card_type");

Card_TypeVO ctvo=new Card_TypeVO();

ctvo=ggsv.queryByPK(Card_TypeVO.class, pk_card_type);

PrintWriter out = response.getWriter();

// 這里的數(shù)據(jù)拼裝一般是從數(shù)據(jù)庫查詢來的

JSONObject jsonObject = new JSONObject();

if(ctvo!=null){

jsonObject.put("price", ctvo.getCard_money());

jsonObject.put("collection_fees", ctvo.getCash());

}else{

jsonObject.put("price", 0);

jsonObject.put("collection_fees", 0);

}

out.print(jsonObject.toString());

out.flush();

out.close();

return null;

} catch (Exception e) {

e.printStackTrace();

return null;

}

}


當(dāng)前文章:java代碼json,java代碼例子
文章出自:http://weahome.cn/article/hegjph.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部