【问题标题】:Why Getting StackOverflowError on with Big JsonObject?为什么使用 Big JsonObject 获取 StackOverflowError?
【发布时间】:2021-03-11 18:41:04
【问题描述】:

我正在尝试使用 android-networking 库 (OkHttp) 发送大字符串值(base64 格式的照片)。

JSONObject jsonObj= new JSONObject();

 JSONArray photosBase64JsonArray = new JSONArray();
            for (String photoBase64:myPhotosBase64
            ) {
                photosBase64JsonArray.put(photoBase64);
            }

jsonObj.put("photos", photosBase64JsonArray);

  AndroidNetworking.post(serverAddress)
                    .addJSONObjectBody(jsonObj)
                    .setPriority(Priority.IMMEDIATE)
                    .addHeaders("myHeader", "testing")
                    .build()
                    .getAsJSONObject()....
       

我遇到了这个异常:

java.lang.StackOverflowError: stack size 8192KB
        at java.lang.StringBuilder.append(StringBuilder.java:203)
        at org.json.JSONStringer.string(JSONStringer.java:354)
        at org.json.JSONStringer.value(JSONStringer.java:261)
        at org.json.JSONObject.writeTo(JSONObject.java:733)
        at org.json.JSONObject.toString(JSONObject.java:701)
        at com.androidnetworking.common.ANRequest$PostRequestBuilder.addJSONObjectBody(ANRequest.java:1394)

如何发送很长的字符串值?

【问题讨论】:

  • 您是否尝试过其他库,例如改造或 android volley?因为问题似乎来自图书馆内部。也许其他库会更好地处理更大的数据集?
  • 使用 Jackson Parser 并解决问题 :) 谢谢。
  • 很高兴听到它

标签: java android android-networking


【解决方案1】:

使用带有 Jackson Parser 的 Fast Android Networking 并解决了问题:)

implementation 'com.amitshekhar.android:jackson-android-networking:1.0.2'

AndroidNetworking.setParserFactory(new JacksonParserFactory());

【讨论】:

    猜你喜欢
    • 2018-11-04
    • 2017-09-26
    • 1970-01-01
    • 2016-10-04
    相关资源
    最近更新 更多