簡體   English   中英

JSONObject在Android中被截斷

[英]JSONObject getting truncated in Android

我的應用程序正在嘗試連接到Salesforce API並下拉其中存在的所有聯系人。 響應json對象有一個名為“totalSize”的鍵,表示33231條記錄。 當我嘗試以JSONArray的形式訪問記錄時,我的JSONArray只包含2000條記錄。 某處jsonobject可能會被截斷。 你能幫忙嗎? 以下是我的代碼。

JSONObject asJSONObject = new JSONObject(new JSONTokener(result));
int totalRecordsSize = Integer.parseInt(asJSONObject.getString("totalSize"));
System.out.println("JSON_RESULT_SIZE : "+totalRecordsSize);
JSONArray array = (JSONArray)asJSONObject.get("records");
int count = array.length();
System.out.println("JSON_ARRAY_SIZE : "+count);

謝謝

salesforce服務器以2000行塊的形式發送結果,響應結構的一部分是nextRecordsUrl ,其中包含下一頁結果的URL,您需要對其進行GET以獲取下一組記錄,依此類推,直到您'我取了整個結果集。

通常,當您的服務器配置(可能默認情況下)響應Web調用響應有限數量的數據時,會出現此類問題。 例如,如果您使用的是ASP.NET webservice,則默認的Json響應長度限制為100kb 但是,您可以通過簡單地增加web.config中的響應長度來覆蓋此限制:

<system.web.extensions>
    <scripting>
      <webServices>
        <jsonSerialization maxJsonLength="5242880"/>  <!-- 5MB -->
      </webServices>
      <scriptResourceHandler enableCompression="true" enableCaching="true" />
    </scripting>
</system.web.extensions>

使用上面的配置,我的json響應將達到5MB,但請確保在處理大量數據時也增加HTTP連接超時值。 例如:

HttpParams httpParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParams, 60000);  //1 minute
HttpConnectionParams.setSoTimeout(httpParams, 60000);          //1 minute
HttpClient client = new DefaultHttpClient(httpParams);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM