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

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

产生问题的代码:

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

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

2 解决方案

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

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

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

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

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. 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 +
                '}';
    }
}

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

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值