解析json以及json对象与java对象之间的转换

Posted 秦川以北

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解析json以及json对象与java对象之间的转换相关的知识,希望对你有一定的参考价值。


1.简单的解析json字符串

首先将json字符串转换为json对象,然后再解析json对象,过程如下。

JSONObject jsonObject = JSONObject.fromObject(jsonStr);

  1. <pre></pre><span style="white-space:pre"></span>  

  2. <pre></pre>  

  根据json中的键得到它的值

String name = jsonObject.getString("name");

int num = jsonObject.getInt("num");

String sex = jsonObject.getString("sex");

int age = jsonObject.getInt("age");

 

2.将json字符串转换为java对象

同样先将json字符串转换为json对象,再将json对象转换为java对象,如下所示。

JSONObject obj = new JSONObject().fromObject(jsonStr);//将json字符串转换为json对象

将json对象转换为java对象

Person jb = (Person)JSONObject.toBean(obj,Person.class);//将建json对象转换为Person对象

 

3.将java对象转换为json字符串

先将java对象转换为json对象,在将json对象转换为json字符串

JSONObject json = JSONObject.fromObject(obj);//将java对象转换为json对象

String str = json.toString();//将json对象转换为字符串

========数据解析==============

Controller------

 

packagecom.shengdun.datapross.controller;

 

importcom.shengdun.datapross.entity.ReceiveData;

importcom.shengdun.datapross.util.SmsesUtil;

importorg.slf4j.Logger;

importorg.slf4j.LoggerFactory;

importorg.springframework.beans.factory.annotation.Autowired;

importorg.springframework.stereotype.Controller;

importorg.springframework.web.bind.annotation.*;

 

 

 

/**

*@Author:小冷

*@Date:2018/11/1920:13

*/

@Controller

@RequestMapping("/receive")

publicclassDataController{

 

 

Private final Logger LOGGER=LoggerFactory.getLogger(DataController.class);

@Autowired

privateReceiveDatareceiveData;

 

@Autowired

privateSmsesUtilsmsesUtil;

 

@RequestMapping("/data")

@ResponseBody

publicStringreceiveData1(@RequestBodyStringstr){

 

//System.out.println(str+"888888888888888888888888888");

 

if(str!=null&&str!=""){

Strings=smsesUtil.getSmses(str);

//returns;

}

return"数据不存在";

}

 

}

 

DataProssUtil---解析工具类

packagecom.shengdun.datapross.util;

 

importorg.springframework.boot.configurationprocessor.json.JSONArray;

importorg.springframework.boot.configurationprocessor.json.JSONException;

importorg.springframework.boot.configurationprocessor.json.JSONObject;

importorg.springframework.stereotype.Component;

importjava.text.SimpleDateFormat;

importjava.util.Date;

importjava.util.TimeZone;

 

/**

*@Author:小冷

*@Date:2018/11/2013:40

*/

@Component

publicclassSmsesUtil{

 

/**

*获取Smses下所有数据

*

*@paramstr

*@return

*/

Public String getSmses(Stringstr){

//接收到的数据

try{

JSONObjectxinYanData=newJSONObject(str);

JSONObjectdata=(JSONObject)xinYanData.get("data");

JSONArraysmses=data.getJSONArray("smses");

//解析smses下的数据

returnanalysisSmsesData(smses);

}catch(JSONExceptione){

e.printStackTrace();

}

returnnull;

}

/**

*解析smses下的数据

*

*@paramsmses

*@return

*/

publicStringanalysisSmsesData(JSONArraysmses){

//半年短信总数

IntegertotalSizeSum=0;

//最近三个月的短信总数

IntegerthreeMonths=0;

//最近一个月的短信数

IntegeroneMonths=0;

//近七天的所有数据

try{

sevenDayData(smses.getJSONObject(0).getJSONArray("items"));

}catch(JSONExceptione){

e.printStackTrace();

}

if(smses!=null){

for(inti=0;i<smses.length();i++){

try{

//获取到smess下的每个json对象

JSONObjectjsonObjectMonth=smses.getJSONObject(i);

totalSizeSum+=Integer.valueOf(jsonObjectMonth.get("total_size").toString());

if(i<3){

threeMonths+=Integer.valueOf(jsonObjectMonth.get("total_size").toString());

}

if(i<1){

oneMonths=Integer.valueOf(jsonObjectMonth.get("total_size").toString());

}

JSONArrayitems=jsonObjectMonth.getJSONArray("items");

//获取item下的所有对象

getItems(items);

}catch(JSONExceptione){

e.printStackTrace();

}

}

}

System.out.println(oneMonths+"近一个月");

System.out.println(threeMonths+"近三个月");

System.out.println(totalSizeSum+"半年");

returnsmses.toString();

}

 

/**

*在近一个月中处理近七天的数据

*@paramoneMonthItem

*/

privatevoidsevenDayData(JSONArrayoneMonthItem){

//当前时间毫秒数

longcurrent=System.currentTimeMillis();

//今天零点零分零秒的毫秒数

longzero=current/(1000*3600*24)*(1000*3600*24)-TimeZone.getDefault().getRawOffset();

//今天23点59分59秒的毫秒数

longtwelve=zero+24*60*60*1000-1;

//昨天23点59分59秒的毫秒数

longyesterday=twelve-24*60*60*1000;

//前七天日期毫秒值

longsevenDay=twelve-24*60*60*1000*8+1;

intcout=0;

System.out.println(yesterday+"昨天时间毫秒值");

//近七天的短信总数

for(inti=0;i<oneMonthItem.length();i++){

try{

//近一月中所有短信

JSONObjectshortMessages=oneMonthItem.getJSONObject(i);

Stringstr=shortMessages.get("time").toString();

SimpleDateFormatformat=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");

Datedate=format.parse(str);

System.out.println(date.getTime()+"指定时间的毫秒值");

if(date.getTime()>=sevenDay&&date.getTime()<=yesterday){

cout++;

}

System.out.println(shortMessages.get("time")+"发送短信时间");

}catch(Exceptione){

e.printStackTrace();

}

}

System.out.println(cout+"当前时间发送次数");

System.out.println(oneMonthItem.toString()+"近一个月内的短信通信对象");

}

 

/**

*获取item下的所有对象

*

*@paramitems

*@return

*/

publicStringgetItems(JSONArrayitems){

 

//System.out.println(items.toString()+"==============items");

returnnull;

}

 

}


以上是关于解析json以及json对象与java对象之间的转换的主要内容,如果未能解决你的问题,请参考以下文章

java对象与json对象之间的转换

Java Gson 实现 Json 数据的生成与解析

Java中net.sf.json包关于JSON与对象互转的坑

JSON对象与字符串相互转化ObjectMapper

json解析出错误

android gson使用--json2对象与对象2json