JSONObject.parseObject() 转化非空字符串 出现空指针异常
时间: 2023-07-28 21:16:13 浏览: 380
`JSONObject.parseObject()` 方法是将 JSON 字符串转换为 JSONObject 对象的方法,如果传入的字符串为空或者为 null,就会出现空指针异常。
所以在调用 `JSONObject.parseObject()` 方法之前,需要先判断传入的字符串是否为空或者为 null,可以使用以下代码:
```java
if (jsonStr != null && !jsonStr.isEmpty()) {
JSONObject jsonObject = JSONObject.parseObject(jsonStr);
}
```
其中,`jsonStr` 是需要转换的 JSON 字符串。如果 `jsonStr` 为空或者为 null,就不会执行 `JSONObject.parseObject()` 方法,避免了空指针异常的出现。
相关问题
JSONObject.parseObject 和 JSONObject.parseObject 区别
很抱歉,您的问题有误。似乎您想问的是 JSONObject.parseObject 和 JSON.parseObject 的区别。
JSONObject 是阿里巴巴的 fastjson 库中的一个类,而 JSON 是 org.json 库中的一个类。它们都可以将 JSON 字符串转换为 Java 对象,但是使用方法略有不同。
JSONObject.parseObject 是 fastjson 库中的一个静态方法,用于将 JSON 字符串转换为指定类型的 Java 对象。例如:
```
String jsonStr = "{\"name\":\"张三\",\"age\":18}";
User user = JSONObject.parseObject(jsonStr, User.class);
```
JSON.parseObject 是 org.json 库中的一个静态方法,用于将 JSON 字符串转换为 org.json.JSONObject 对象。例如:
```
String jsonStr = "{\"name\":\"张三\",\"age\":18}";
JSONObject jsonObject = JSON.parseObject(jsonStr);
```
如果需要将 org.json.JSONObject 对象转换为 Java 对象,可以使用 jsonObject.toJavaObject 方法。例如:
```
User user = jsonObject.toJavaObject(User.class);
```
jsonobject.parseobject作用 jsonobject.parseobject的单元测试怎么写
JSONObject.parseObject方法的作用已经在上一个回答中解释过了,它用于将JSON字符串转换为Java对象。
下面是一个示例的单元测试代码,用于测试JSONObject.parseObject方法的正确性:
```java
import com.alibaba.fastjson.JSONObject;
import org.junit.Assert;
import org.junit.Test;
public class JSONObjectTest {
@Test
public void testParseObject() {
String jsonStr = "{\"name\":\"John\",\"age\":30,\"city\":\"New York\"}";
// 期望的Java对象
Person expectedPerson = new Person("John", 30, "New York");
// 解析JSON字符串为Java对象
Person actualPerson = JSONObject.parseObject(jsonStr, Person.class);
// 断言期望的值和实际值是否相等
Assert.assertEquals(expectedPerson, actualPerson);
}
// 定义一个简单的JavaBean类
public static class Person {
private String name;
private int age;
private String city;
public Person(String name, int age, String city) {
this.name = name;
this.age = age;
this.city = city;
}
// 省略getter和setter方法
// 重写equals方法,用于断言比较
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null || getClass() != obj.getClass()) {
return false;
}
Person person = (Person) obj;
return age == person.age && name.equals(person.name) && city.equals(person.city);
}
}
}
```
这个单元测试代码使用JUnit框架编写,首先定义了一个简单的JavaBean类 `Person`,然后使用`JSONObject.parseObject`方法将JSON字符串转换成`Person`对象,最后通过断言比较期望的值和实际值是否相等来验证方法的正确性。
阅读全文