[英]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.