java - 从 JSON 中提取字节数组

标签 java json arrays gson illegalstateexception

我有以下格式的 JSON:

[{"fingerprint":"[79,0,0,0,18,0,0,0,18,0,0,0,19,0,0,0,23,0,0,0,40,0,0,0,42,0,0,0,63,0,0,0,68,0,0,0,71,0,....]"}]

我一直在尝试使用以下方法从中提取字节数组:

JSONFingerprint fingerprintData = gson.fromJson(obj, JSONFingerprint.class);

JSONFingerprint 所在位置:

public class JSONFingerprint {

    byte[] fingerprint;

    public byte[] getfingerprintData() {
        return fingerprint;
    }

}

我收到此错误:

Exception in thread "Thread-0" com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was STRING
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:176)
    at com.google.gson.Gson.fromJson(Gson.java:795)
    at com.google.gson.Gson.fromJson(Gson.java:859)
    at com.google.gson.Gson.fromJson(Gson.java:832)

有人有什么想法吗?

最佳答案

您的 JSONPOJO 似乎不匹配。对此有两种可能的解决方案。

解决方案 1:-

如果你无法更改 JSON 格式(即)你的 JSON 将是这样的,

[{"fingerprint":"[79,0,0,0,18,0,0,0,18,0,0,0,19,0,0,0,23,0,0,0,40,0,0,0,42,0,0,0,63,0,0,0,68,0,0,0,71,0,....]"}]

然后您需要将您的 JSONFingerprint 类更改为:-

public class JSONFingerprint {

    String fingerprint;

    public String getfingerprintData() {
        return fingerprint;
    }
}

并且您需要像这样解析您的 JSON:-

JSONFingerprint[] dummy = new JSONFingerprint[0]; 
JSONFingerprint[] fingerPrint = gson.fromJson(json, dummy.getClass());
System.out.println(fingerPrint[0].getfingerprintData());

解决方案 2:-

如果你的 POJO 无法改变(即)你的 POJO 将是这样的,

public class JSONFingerprint {

    byte[] fingerprint;

    public byte[] getfingerprintData() {
        return fingerprint;
    }
}

然后您必须将 JSON 格式更改为如下所示:-

{"fingerprint":[1,2,3,4,5,6,7,8,9,10]}

您通常可以解析它,就像您已经完成的那样:-

JSONFingerprint fingerprintData = gson.fromJson(obj, JSONFingerprint.class);

希望这对您有帮助!

关于java - 从 JSON 中提取字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15628603/

相关文章:

javascript - 使用对象键作为日期来获取平均值

python - 更改 json 值并创建新值

javascript - 避免改变 JavaScript 数组

java - 比较两个 Cursor 对象的相等性

java - Android - 从 url 下载 JSON 文件

java - 聊天应用程序如何与其服务器通信?

java - 根据数组列表中的对象类型执行不同的行为

java - 如何在java中读取excel中的数值?

java - 为什么我在响应 JSON 请求时收到 500 错误?

Python:向 numpy 二维数组添加一列