我有2个android应用-App A和AppB。App A通过发送JSON字符串 App B的套接字。我在App上反序列化JSON字符串时遇到问题 B,但是我可以在App A中反序列化。尝试运行时App A崩溃 “ gson.fromJson(json,mrlType)”。 (请参见下面的代码段)
我在App B中反序列化时收到的错误应为BEGIN_ARRAY,但在第1行第2列路径$处为STRING。
我尝试过的事情是:
我尝试使用DataOutputStream / DataInputStream和OutputStream / InputStream,因为我怀疑它可能损坏了 App A发送到App B的JSON字符串。
我使用GSON.toJson创建JSON字符串,并使用GSON.fromJson反序列化字符串。
我尝试在App A本身上反序列化App A发送给App B的相同字符串。它像一种魅力。
我还用UTF-8编码了将JSON字符串转换为的字节数组,然后由App A发送到AppB。我将其转换为 带有以下内容的字符串:收到应用B时的String(buffer,Charsets.UTF-8) 它。
// App A
var reminderList = getAllReminderInfoList()
val gson = Gson()
val jsonStr = gson.toJson(reminderList)
dataOutputStream.writeInt(bytes.size)
dataOutputStream.write(jsonStr.toByteArray(Charsets.UTF_8))
dataOutputStream.flush()
// App B
val len = dataInputStream.readInt()
buffer = ByteArray(len)
dataInputStream.readFully(buffer)
jsonStr = String(buffer, Charsets.UTF_8)
val gson = Gson()
val mrlType = object : TypeToken<ArrayList<MedicationReminderLine>>() {}.type
var list : ArrayList<MedicationReminderLine> = gson.fromJson(json, mrlType)
我真的希望App B反序列化json字符串没有问题。显然,它与编程逻辑无关(如果我错了,请纠正我)。我认为这一定是我不熟悉的Gson的错误或特征。我真的希望有人能指出我正确的方向!谢谢。