在Springboot框架下的http接口后端项目中,需要将包含byte[]数组通过JSON序列化,http接口转发出去。要求JS那边能原样转化出来 。
使用fastjson 进行序列化,以下是服务端的实现。JS那边待定。
测试以下byte[]数组:
new byte[]{(byte) 0xff, 0x00, 0x05, 0x00, 0x07, 0x03, 0x01, 0x00, -1, 0x55
对象class:包含byte[]数组属性源码:
package g.test;
import java.util.ArrayList;
import java.util.List;
public class Student {
private String name; // 姓名
private Integer age; // 年龄
private String gender; // 性别
List<byte[]> packetList = new ArrayList<byte[]>() {
{
add(new byte[]{(byte) 0xff, 0x00, 0x05, 0x00, 0x07, 0x03, 0x01, 0x00, -1, 0x55}
);
}
};
public List<byte[]> getPacketList() {
return packetList;
}
public void setPacketList(List<byte[]> packetList) {
this.packetList = packetList;
}
public Student(String name, Integer age, String gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", gender='" + gender + '\'' +
'}';
}
}
http接口实现:
使用fastjson 序列化接口:JSONObject.toJSON(object)
package gtk.mbbcontroller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import g.test.Student;
import gtk.utils.LogUtils;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import static gtk.darwinble.transfercom.AppFits.*;
@RestController//注解,表明这是控制层。
public class FitServerController {
@GetMapping(value = "/getDetail",produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public Object getDetail() {
Student John = new Student("John", 16,"boy");
LogUtils.d(String.valueOf(JSONObject.toJSON(John)));
return JSONObject.toJSON(John);
}
}
log输入:可获取原样字符串输出:
[11:09:03.284 DEBUG] xxgetDetail.() 105行] {"gender":"boy","name":"John","packetList":[[-1,0,5,0,7,3,1,0,-1,85]],"age":16}
Postman测试结果:
扩展如果是要传多个student:
ArrayList<Student> studentList = new ArrayList<Student>();
// 方式 7 包含byte[]数组的对象转换JSON
studentJsonArray = JSONArray.parseArray(String.valueOf(JSON.toJSON(studentList)));
System.out.println("\n方式 7: " + studentJsonArray.toJSONString());
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/101602.html