java json 解析null_解析包含null的原始json数组

Json数组:{"userName":null," msgArr":[null],"numrow":0} //String result

Gson:new Gson().fromJson(result, MyClass.class);

MyClass:public String userName;

public int[] msgArr;

...

错误stack:at java.lang.IllegalArgumentException: Primitive array can't take null values.

at java.lang.reflect.Array.set(Array.java:406)

at com.google.gson.internal.bind.ArrayTypeAdapter.read(ArrayTypeAdapter.java:78)

at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:93)

at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:172)

at com.google.gson.Gson.fromJson(Gson.java:803)

at com.google.gson.Gson.fromJson(Gson.java:768)

at com.google.gson.Gson.fromJson(Gson.java:717)

at com.google.gson.Gson.fromJson(Gson.java:689)

at com.test.dao.RequestBase.onPostExecute(RequestBase.java:79)

如果不能修改json字符串 "msgArr=[null]",怎么解除这个异常?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中的JSON解析可能会返回null的情况有以下几种: 1. JSON字符串本身为null或空字符串。 2. JSON字符串中的某个属性值为null。 3. JSON字符串中的某个属性值不存在。 4. JSON字符串中的某个属性值类型与Java对象中的属性类型不匹配。 为了避免这些情况,我们可以在解析JSON字符串时进行一些判断和处理,例如使用try-catch语句捕获异常、使用if语句判断属性值是否为null等。 以下是一个简单的JSON解析示例,其中使用了try-catch语句和if语句来处理可能出现的null情况: ```java import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; public class JsonParser { public static void main(String[] args) { String jsonString = "{\"name\":\"Tom\",\"age\":20,\"gender\":\"male\"}"; try { JSONObject jsonObject = JSON.parseObject(jsonString); String name = jsonObject.getString("name"); Integer age = jsonObject.getInteger("age"); String gender = jsonObject.getString("gender"); if (name != null && age != null && gender != null) { Person person = new Person(name, age, gender); System.out.println(person); } else { System.out.println("JSON字符串中存在null值或属性不存在。"); } } catch (Exception e) { System.out.println("JSON解析失败:" + e.getMessage()); } } } class Person { private String name; private Integer age; private String gender; public Person(String name, Integer age, String gender) { this.name = name; this.age = age; this.gender = gender; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + ", gender='" + gender + '\'' + '}'; } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值