通过JSON.toJSONString(java对象)方法,可以将一个java对象转换为json字符串。
使用方法和结果如下:
package com.example2.demo;
import com.alibaba.fastjson.JSON;
import org.junit.Test;
class Dog{
private String name;
protected int age;
public int id;
Dog(String name,int age,int id){
this.name = name;
this.age = age;
this.id = id;
}
}
public class JSONTests {
@Test
public void contextLoads() {
String yuan = JSON.toJSONString(new Dog("yuan", 18,5));
System.out.println(yuan);
}
}
只有访问修饰符为public的成员变量才会转成json字符串,而private,protected修饰的成员变量将会被忽略,所以需要转换的java对象的属性都要写成公有类型,或者添加get方法
推荐要转为json字符串的java对象,属性全为private,然后提供get,set方法
通过JSON.parseObject(json字符串,class对象) 方法,将json字符串转化为一个java对象
使用如下:
package com.example9.demo913;
import com.alibaba.fastjson.JSON;
import org.junit.Test;
class Dog{
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 class FastJsonTests {
@Test
public void testJson(){
String json = "{name:\"shan\",age:18}";
Dog dog = JSON.parseObject(json, Dog.class);
System.out.println(dog.getName()+"==>"+dog.getAge());
}
}
这里的java对象必须有不带参数的构造函数,可以一个构造函数都不写(会有默认构造函数),如果没有不带参数的构造函数,会报create instance error的异常,说明这个方法是根据不带参数的构造函数创建java对象,然后向其赋值,所以如果是私有属性或保护属性json转对象就必须提供set方法,对象转json则必须提供get方法,如果是公有属性则不需要添加get,set方法,可以视情况而定
这个与将java对象转换为json字符串没有区别,都是通过JSON.toJSONString(java集合)方法
package com.example2.demo;
import com.alibaba.fastjson.JSON;
import org.junit.Test;
import java.util.ArrayList;
class Dog {
public String name;
public int age;
public Dog(String name, int age) {
this.name = name;
this.age = age;
}
}
public class JSONTests {
@Test
public void contextLoads() {
ArrayList dogList = new ArrayList<>();
dogList.add(new Dog("yuan", 18));
dogList.add(new Dog("shan", 20));
String dogListStr = JSON.toJSONString(dogList);
System.out.println(dogListStr);
}
}
这个和转对象很像,通过JSON.parseArray(json字符串,class对象) 方法,将json字符串转化为一个java对象
package com.example2.demo;
import com.alibaba.fastjson.JSON;
import org.junit.Test;
import java.util.List;
class Dog {
public String name;
public int age;
}
public class JSONTests {
@Test
public void contextLoads() {
String listStr = "[{\"age\":18,\"name\":\"yuan\"},{\"age\":20,\"name\":\"shan\"}]";
List dogs = JSON.parseArray(listStr, Dog.class);
for(Dog dog:dogs){
System.out.println(dog.name+"==>"+dog.age);
}
}
}
将一个json字符串转化为java对象使用parseObject方法,转化为List使用parseArray方法;
将java对象或集合转化为json字符串则都使用toJSONString方法;