解析json以及json对象与java对象之间的转换
Posted 秦川以北
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解析json以及json对象与java对象之间的转换相关的知识,希望对你有一定的参考价值。
1.简单的解析json字符串
首先将json字符串转换为json对象,然后再解析json对象,过程如下。
JSONObject jsonObject = JSONObject.fromObject(jsonStr);
<pre></pre><span style="white-space:pre"></span>
<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对象之间的转换的主要内容,如果未能解决你的问题,请参考以下文章