当前位置:   article > 正文

访问“com.alibaba.fastjson.JSON“的静态成员“parseObject“._use static access with "com.alibaba.fastjson.json"

use static access with "com.alibaba.fastjson.json" for "parseobject

1 访问"com.alibaba.fastjson.JSON"的静态成员"parseObject".

产生问题的代码:

import com.alibaba.fastjson.JSONObject;
  • 1
JSONObject question = JSONObject.parseObject(personJsonStr);
  • 1

原因: 不应通过派生类型访问 “static” 基类成员。为了代码清晰起见,永远不要使用派生类型的名称访问 base 类的 static 成员。 这样做很容易造成混淆,并且可能会导致存在两个不同的静态成员的错觉。

2 解决方案

解决方案1: 使用基类访问parseObject方法

import com.alibaba.fastjson.JSONObject;
  • 1
JSONObject result1 = JSON.parseObject(personJsonStr);
  • 1

解决方案2: 使用其他包解析Json

import net.sf.json.JSONObject;
  • 1
JSONObject result2 = JSONObject.fromObject(personJsonStr);
  • 1

3 完整示例

      这个完整示例由两个文件组成: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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

代码清单:

  1. Person.java
  2. Test.java

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 +
                '}';
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

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("============================================");
    }
}

  • 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
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/923028
推荐阅读
相关标签
  

闽ICP备14008679号