一、简介
JavaScript Object Notation JS对象简谱,是一种轻量级的数据交换格式。
二、对象格式
一个对象,由一个大括号表示:
括号中描述对象的属性,通过键值对来描述对象的属性
格式:
键与值之间使用冒号链接,多个键值对之间使用逗号分隔;
键值对的键,应使用引号引住(通常Java解析时,键不使用引号会报错,而JS能正确解析);
键值对的值,可以是JS中的任意类型的数据。
例:一本书
书名
简介
java:
class Book{
private String name;
private String info;
get/set....
}
Book b = new Book();
b.setName = "xxx";
b.setInfo = "yyy";
...
js:
var b = new Book();
b.name = "xxx";
b.info = "yyy";
XML:
<book>
<name>xxx</name>
<info>yyy</info>
</book>
JSON:
{
"name":"xxx",
"info":"yyy"
}
数组格式:
在JSON格式中可以与对象互相嵌套:[元素1,元素2...]
例如:
{
"friend":["x","y","z",{
"name":"aaa",
"age":18
}]
}
使用xstream:
package com.java.h.demo;
import com.thoughtworks.xstream.XStream;
import java.util.Objects;
/**
* @author s
* @version 1.0
* @date 2022-02-19 13:59
*/
public class Demo5 {
public static void main(String[] args) {
Person p = new Person();
p.setName("张三");
p.setAge(18);
// XStream使用
// 1.创建XStream对象
XStream x = new XStream();
// 2.修改某个类型生成的节点(可选,默认包名.类名)
x.alias("person",Person.class);
// 3.传入对象,开始生成
String xml = x.toXML(p);
System.out.println(xml);
}
static class Person{
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Person() {
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return age == person.age && Objects.equals(name, person.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
}