您的位置:

java类json报文,java发送json报文

java类json报文,java发送json报文

更新:

本文目录一览:

什么是JSON文件,java中如何从里面存取数据

json是一个固定格式的字符串, 其中只有数字和字符串、数组、对象几种种格式,字符串要用双引号括起来 分为数组和对象2种表示形式,数组是用[]括起来的,每个元素间用逗号隔开,获取元素跟java一样使用下标获取; 对象是用{}括起来的,这个对象只有属性和值,格式为 key:value,key:value,key:value。。。,key相当于java对象中的属性名,value就是属性值 举例 ["a","dddd","tttt"]这是数组 {a:1,b:2,c:5} 这个是对象,获取用对象。key取值 复杂一点的无非就是数组、对象互相嵌套 比如 [{a:2,b:2},{a:4,b:9}] {a:[1,2,3,4],b:5,c:{d:2,gg:4}}这类的格式,当你知道它的数组和对象表现形式后很容易明白里边的意思 获得服务器端JSON(其实就是一段有格式的字符串),可以通过string的split()方法拆分,然后再转化成一个个js对象.当然要用JSON得先导一个JSON的jar包

java中json怎么运用?

JSON(JavaScript对象符号)是一种轻量级的数据交换格式。这是很容易为人类所读取和写入。这是易于机器解析和生成。它是基于JavaScript编程语言的一个子集 , 标准ECMA-262第三版- 1999年12月。JSON是一个完全独立于语言的文本格式,但使用C家族的语言,包括C,C + +,C#,Java中的JavaScript,Perl的,Python中,和许多其他程序员所熟悉的约定。这些特性使JSON成为理想的数据交换语言。他和map很类似,都是以

键/值 对存放的。

JSON 使用须要用的JAR包:

commons-lang.jar

commons-beanutils.jar

commons-collections.jar

commons-logging.jar

ezmorph.jar

json-lib-2.2.2-jdk15.jar

使用JSON中的JSONObject:

1.创建一个JSONObject对象,并使用put();方法添加元素:

首先我们创建一个User对象以备后用:

public class User {

private int id;

private String name;

private String pwd;

private String sex;

//get,set方法

@Override

//重写他的toString方法

public String toString() {

return this.name+"--"+this.pwd+"--"+this.sex;

}

}

Java的json反序列化:Java数据类可以和json数据结构不一致吗?

由于时间关系我也没有写全,这里提供一个思路吧。代码如下:

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转JsonObject

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

//反射获取目标对象属性

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

String fieldName = field.getName();

Class fieldClass = field.getType();

System.out.print("当前field名:[" + fieldName + "],");

System.out.println("当前field类型:[" + fieldClass + "]");

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

//检查是否有PowerfulAnnotation注解

if (annotation != null) {

PowerfulAnnotation powerful = (PowerfulAnnotation) annotation;

String powerfulValue = powerful.value();

System.out.println("发现PowerfulAnnotation注解,值为:[" + powerfulValue + "]");

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

//声明一个临时JsonObject,将用于获取下一层json对象

JsonObject tmpJson = jsonObject;

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

//目标值是在powerfulValue的最后一个字段,例如powerfulValue为token.id的话,目标的值就是id,所以先获取token这个jsonObject,并赋值给临时tmpJson

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

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

} else {

//到达powerfulValue的最后一个字段,检查其类型,并赋值给目标对象

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

//从目标对象中获取目标属性

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

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

System.out.println("将[" + powerfulValue + "]的值[" + value + "]赋给目标对象的[" + fieldName + "]");

//将值赋值给目标属性

targetField.set(account, value);

}

}

}

//属性上没有PowerfulAnnotation注解

else {

//检查当前属性的类型

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

//从目标对象中获取目标属性

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

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

System.out.println("直接将值[" + value + "]赋给目标对象的[" + fieldName + "]");

//将值赋值给目标属性

targetField.set(account, value);

}

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

}

System.out.println("目标对象最终值:" + account);

}

/**

* 检查当前属性的类型

* (这里由于时间关系,我没有写全,只检查了String、int、boolean类型,全类型应包括boolean、char、byte、short、int、long、float、double,你有时间自己补充一下)

*

* 如果发现当前属性是一个对象,那么应该将JsonObject转换成对应的对象再返回(由于时间关系,这里我也没有试过,总之思路是这样)

*/

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);

}

}

代码还没写完,主要集中在没有对JsonArray进行处理,当json串里包含数组时会报错,另外一些没写完的我在注释里写了点,你可以参照一下。整体思路还是利用java反射机制进行。

以上代码运行结果:

java类json报文,java发送json报文

本文目录一览: 1、什么是JSON文件,java中如何从里面存取数据 2、java中json怎么运用? 3、Java的json反序列化:Java数据类可以和json数据结构不一致吗? 什么是JSON文

2023-12-08
Java解析JSON报文详解

2023-05-23
java生成json报文,json 生成

本文目录一览: 1、用java生成json文件,怎么编写? 2、java如何创建Json文件? 3、java后台如何生成.json文件 用java生成json文件,怎么编写? 直接调用类库里的属性和方

2023-12-08
java复杂json报文(解析复杂的json字符串)

本文目录一览: 1、用java怎么解析复杂的JSON 2、Java的json反序列化:Java数据类可以和json数据结构不一致吗? 3、怎样利用java生成json复杂对象 4、怎么用java对象表

2023-12-08
JSON报文——从数据到信息的完美呈现

2023-05-17
java报文,java报文适配

2023-01-09
json报文对比java(Json内容比对)

2022-11-16
java把实体类转成json(java将实体类转为json)

本文目录一览: 1、java对象实体与json之间的转换 2、java实体类怎么转换成json。 3、java怎么把数据转成json 数组 4、如何将数据实体转换为 JSON 字符串 5、java中怎

2023-12-08
向服务器发送json格式字符串(json字符串转字符串)

本文目录一览: 1、前台往后台传送JSON格式的字符串为什么JAVA后台接收的时候总报错! 2、如何用post方法向服务器发送一个json类型的字符串 3、php如何发送和接收JSON数据 4、如何上

2023-12-08
core解析json的笔记(c json解析)

本文目录一览: 1、如何解析json中map数据 2、fasterxml.jackson.core.jsonparser.feature是哪个jar包的 3、spring mvc 怎么获取json 4

2023-12-08
java服务端json工具类(json接口服务开发)

本文目录一览: 1、JAVA JSON 写个工具类 2、java中处理json格式数据的类? 3、java中服务端怎么实现jsonp 4、java中处理JSON的开源工具都有些什么?那个比较好用 5、

2023-12-08
中文json文件(json格式文件)

本文目录一览: 1、python读取json文件有中文会报错 2、tomcat下查看json文件中文乱码 3、json怎么转换中文 4、如何用curl post 一段包含中文json的文本到服务器 5

2023-12-08
java解析复杂json报文(java json字符串解析)

2022-11-08
java中json对象序列化,java序列化和json序列化

2022-11-24
coap发送json,coap透传

本文目录一览: 1、iot设备有哪些 2、xcap构造coap报文要选什么协议 3、如何使用coap协议向服务器发送数据包 iot设备有哪些 Copyright © 1999-2020, CSDN.N

2023-12-08
java将数据转换成json时(json数据转换为java对

2022-11-11
java将实体类转化为json(java生成实体类)

本文目录一览: 1、java对象实体与json之间的转换 2、java 实体类转换成json报错,请指教! 3、java实体类怎么转换成json。 4、如何将数据实体转换为 JSON 字符串 5、ja

2023-12-08
java中的json,java中的json是什么

2023-01-07
javajsonp接口(java开发api接口返回json)

本文目录一览: 1、如何在java代码中执行jsonp请求 2、jsonp公开接口返回中文乱码问题 3、java中服务端怎么实现jsonp 4、java写一个接口实现将移动端的数据存放到数据库指定的表

2023-12-08
java对json增删改查,java对json文件的增删改查

2022-11-23