启动日志格式
启动日志结构相对简单,主要包含公共信息,启动信息和错误信息。
{
"common": {
"ar": "230000", -- 地区编码
"ba": "iPhone", -- 手机品牌
"ch": "Appstore", -- 渠道
"md": "iPhone 8", -- 手机型号
"mid": "YXfhjAYH6As2z9Iq", -- 设备id
"os": "iOS 13.2.9", -- 操作系统
"uid": "485", -- 会员id
"vc": "v2.1.134" -- app版本号
},
"start": {
"entry": "icon", --icon手机图标 notice 通知 install 安装后启动
"loading_time": 18803, --启动加载时间
"open_ad_id": 7, --广告页ID
"open_ad_ms": 3449, -- 广告总共播放时间
"open_ad_skip_ms": 1989 -- 用户跳过广告时点
},
"err":{
--错误
"error_code": "1234", --错误码
"msg": "***********" --错误信息
},
"ts": 1585744304000 --跳入时间戳
}
根据上面的日志来构建数据
在java文件夹下创建FastJsonTest类
public class FastJsonTest {
public static void main(String[] args) {
}
public static String toJSONString(){
}
}
创建一个文件夹,下面包含Common,Error,Start类
输入数据,编写Common类
public class Common {
private String ar;
private String ba;
private String ch;
private String md;
private String mid;
private String os;
private String uid;
private String vc;
}
然后Alt + Insert 创建get 和 set
按Shift+↓全选;其他类同理
编写Start类
public class Start {
private String entry;
private int open_ad_id;
private int open_ad_ms;
private int open_ad_skip_ms;
}
编写Error类
public class Error {
private String error_code;
private String msg;
}
编写创建启动日志类
public class Start_Log {
private Common common;
private Start start;
private Error err;
private long ts;
}
主要方法介绍
下载Json的jar包主要是利用两个方法;
toJSONString() 和 parseObject()
JSON.toJSONString() : 将对象转换为JSON字符串;
JSON.parseObject() 将JSON字符串转换为Java对象;
最后需要做到 从一串JSON字符串里面,找到需要的数据
构建日志
import com.alibaba.fastjson.JSON;
import com.zygxy.bean.Common;
import com.zygxy.bean.Error;
import com.zygxy.bean.Start;
import com.zygxy.bean.Start_Log;
import java.util.Date;
public class FastJsonTest {
public static void main(String[] args) {
Common common =new Common();
common.setAr("450000");
common.setBa("OPPO");
common.setCh("oppo shop");
common.setMd("OPPO K1");
common.setMid("YXfhjAYH6As2z9Iq");
common.setOs("android 11");
common.setUid("99999");
common.setVc("v2.1");
Start start = new Start();
start.setEntry("icon");
start.setOpen_ad_id(18803);
start.setOpen_ad_ms(5000);
start.setOpen_ad_skip_ms(3000);
Error err= new Error();
err.setError_code("0000");
err.setMsg("");
Start_Log log= new Start_Log();
log.setCommon(common);
log.setStart(start);
log.setErr(err);
log.setTs(new Date().getTime());
String jsonString = toJSONString(log);
System.out.println(jsonString);
}
public static String toJSONString(Object o)
{
return JSON.toJSONString(o);
}
}
点击运行
{"common":{"ar":"450000","ba":"OPPO","ch":"oppo shop","md":"OPPO K1","mid":"YXfhjAYH6As2z9Iq","os":"android 11","uid":"99999","vc":"v2.1"},"err":{"error_code":"0000","msg":""},"start":{"entry":"icon","open_ad_id":18803,"open_ad_ms":5000,"open_ad_skip_ms":3000},"ts":1639200109107}
反过来也可以通过JSON.parseObject()将上面的json字符串转化成java对象
编写测试测试对象
public static Object fromJsonStringtoObject(String jsonString,Class clz){
return JSON.parseObject(jsonString,clz);
}
编写代码
String jsonString2="{\"common\":{\"ar\":\"450000\",\"ba\":\"OPPO\",\"ch\":\"oppo shop\",\"md\":\"OPPO K1\",\"mid\":\"YXfhjAYH6As2z9Iq\",\"os\":\"android 11\",\"uid\":\"99999\",\"vc\":\"v2.1\"},\"err\":{\"error_code\":\"0000\",\"msg\":\"\"},\"start\":{\"entry\":\"icon\",\"open_ad_id\":18803,\"open_ad_ms\":5000,\"open_ad_skip_ms\":3000},\"ts\":1639200109107}";
Start_Log o =(Start_Log) fromJsonStringtoObject(jsonString2, Start_Log.class);
System.out.println(o);
把之前的代码改一下,这里注释
上面四个类下面 加上toString方法:
其它几个同理
运行程序得到:
Start_Log{
common=Common{
ar='450000', ba='OPPO', ch='oppo shop', md='OPPO K1', mid='YXfhjAYH6As2z9Iq', os='android 11', uid='99999', vc='v2.1'}, start=Start{
entry='icon', open_ad_id=18803, open_ad_ms=5000, open_ad_skip_ms=3000}, err=Error{
error_code='0000', msg=''}, ts=1639200109107}