【发布时间】:2013-03-15 17:58:03
【问题描述】:
我有以下格式的 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)
有人有什么想法吗?
【问题讨论】:
-
你的数组应该在字符串中吗?
-
你有一个数组,其中包含一个包含数组的对象。您首先需要索引数组,然后从结果对象中提取元素“指纹”。 “指纹”元素将是一个数组,大概是您想要的字节数组。
-
但是@atw13 有一点,“指纹”元素显然是一个包含数组的字符串,因此您需要提取字符串,然后通过 JSON 解释器运行以提取数组。跨度>
标签: java json bytearray gson illegalstateexception