赞
踩
产生问题的代码:
import com.alibaba.fastjson.JSONObject;
JSONObject question = JSONObject.parseObject(personJsonStr);
原因: 不应通过派生类型访问 “static” 基类成员。为了代码清晰起见,永远不要使用派生类型的名称访问 base 类的 static 成员。 这样做很容易造成混淆,并且可能会导致存在两个不同的静态成员的错觉。
解决方案1: 使用基类访问parseObject方法
import com.alibaba.fastjson.JSONObject;
JSONObject result1 = JSON.parseObject(personJsonStr);
解决方案2: 使用其他包解析Json
import net.sf.json.JSONObject;
JSONObject result2 = JSONObject.fromObject(personJsonStr);
这个完整示例由两个文件组成:Person.java和Test.java文件,并且使用到了两个依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson.version}</version>
</dependency>
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
</dependency>
代码清单:
1 Person.java
import lombok.Data; @Data public class Person { private String name; private String sex; private Integer age; Person(String name, String sex, Integer age) { this.name = name; this.sex = sex; this.age = age; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", sex='" + sex + '\'' + ", age=" + age + '}'; } }
2 Test.java
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSON; public class Test { public static void main(String[] args) { Person person = new Person("yizhaofengyue", "male", 22); JSONObject personJsonObj = new JSONObject(); personJsonObj.put("name", "yizhaofengyue"); personJsonObj.put("sex", "male"); personJsonObj.put("age", 22); String personJsonStr = "{\"name\":\"yizhaofengyue\",\"sex\":\"male\",\"age\":22}"; System.out.print("JavaObj:"); System.out.println(person); System.out.print("JSON:"); System.out.println(personJsonObj.toJSONString()); System.out.print("JSONString:"); System.out.println(personJsonStr); // 问题 System.out.println("-----------------问题-------------------"); JSONObject question = JSONObject.parseObject(personJsonStr); System.out.println(question.toJSONString()); // 解决方案1: System.out.println("-----------------解决方案1-------------------"); JSONObject result1 = JSON.parseObject(personJsonStr); System.out.println(result1.toJSONString()); // 解决方案2: System.out.println("-----------------解决方案2-------------------"); net.sf.json.JSONObject result2 = net.sf.json.JSONObject.fromObject(personJsonStr); System.out.println(result2.toString()); // 其他相关操作 // Java对象转Json字符串 System.out.println("-----------------其他操作-------------------"); net.sf.json.JSONObject result3 = net.sf.json.JSONObject.fromObject(person); System.out.println(result3.toString()); System.out.println("============================================"); } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。