我目前正在使用此代码从我的服务器创建JsonStrings中的对象:
JsonParser parser = new JsonParser();
JsonObject myJsonObject = (JsonObject) parser.parse(myInputStreamReader);
MyObject myObject = new Gson().fromJson(myJsonObject.toString(), MyObject.class);
这在大多数情况下效果很好,但有时候,对象非常大,因此myJsonObject.toString()
会导致java.lang.OutOfMemoryError
。是否有可能将JsonObjects
直接转换为指定的对象而不首先将它们转换为字符串?
我已经使用OutOfMemmoryError
而不是StreamReader
绕过String
创建JsonObject,现在我再次遇到完全相同的问题,只有几行:/
答案 0 :(得分:1)
为什么要将JSON流解析为JSON对象,然后将JSON对象转换回字符串,然后将此字符串转换回MyObject?只做最后一部分,一切都会快得多,并且使用更少的内存。
MyObject myObject = new Gson().fromJson(myInputStreamReader, MyObject.class);