FastJson中将JSON解析成对象时发生错误:Exception in thread “main” java.lang.ClassFormatError: Illegal UTF8 string in constant pool in class file
问题
今天在学习JSON解析时,在使用FastJson类进行解析的时候,发生了一下问题:
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | package JSON解析; import java.util.Objects; public class Person {<!-- --> private String name; private String age; public Person() {<!-- --> } public Person(String name, String age) {<!-- --> this.name = name; this.age = age; } public String getName() {<!-- --> return name; } public void setName(String name) {<!-- --> this.name = name; } public String getAge() {<!-- --> return age; } public void setAge(String age) {<!-- --> this.age = age; } @Override public boolean equals(Object o) {<!-- --> if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Person person = (Person) o; return Objects.equals(name, person.name) && Objects.equals(age, person.age); } @Override public int hashCode() {<!-- --> return Objects.hash(name, age); } @Override public String toString() {<!-- --> return "Person{" + "name='" + name + '\'' + ", age='" + age + '\'' + '}'; } } |
1 2 3 4 5 6 7 8 9 10 | package JSON解析; import com.alibaba.fastjson.JSON; public class Demo2_FastJson {<!-- --> public static void main(String[] args) {<!-- --> String json = "{"age":"20","name":"lisi"}"; Person person = JSON.parseObject(json, Person.class); System.out.println(person); } } |
问题
原因
包的名称包含了中文
解决方法
将包的名称中的中文字符删除,就不会出现非法字符串错误了
结果
运行OK