Je lis d'une API fournie par une entreprise, mais le problème est que l'un des comptes à partir de laquelle je reçois les données a environ 22000 objets JSON, il se lit bien avec de petites quantités de données, je dirais jusqu'à 8000 enregistrements, mais alors je reçois des problèmes comme le json n'est pas bien formaté en plus du problème de pouvoir lire la réponse.Lire beaucoup de données retournées par l'API
La réponse vient ainsi:
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://ywers.com">
[{"Name":"Edward", "LastName":"Jones", "Address":"{accepted}"}
,{"Name":"Carlos", "LastName":"Ramirez", "Address":"{Rejected}"}, ....... 22k more records here]</string>
J'ai demandé une aide plus tôt ici pour voir la meilleure façon de le faire, et je reçu une réponse sur la lecture à l'aide de l'analyseur XML et un analyseur de JSON , j'utilise GSON.
String XML = "<Your XML Response>";
XPathExpression xpath = XPathFactory.newInstance()
.newXPath().compile("/*[local-name()='string']");
String json = xpath.evaluate(new InputSource(new StringReader(XML)));
puis
JSONArray jsonRoot = new JSONArray(json.trim());
System.out.println(jsonRoot.getJSONObject(0).getString("Address")); // {accepted}
Le problème est l'approche que j'ai est qu'il renvoie des erreurs lors de la lecture du XML, il commence à lire, mais après un certain temps qu'il arrête avec des erreurs comme:
java.lang.OutOfMemoryError
at java.lang.AbstractStringBuilder.enlargeBuffer(AbstractBuilder.java:94)
at java.lang.StringBuffer.append(StringBuffer.java:219)
at org.apache.harmony.xml.dom.CharacterDataImpl.appendData(CharacterDataImpl.java:43)
......
J'apprécierais des conseils sur la façon de procéder avec cela, je suis un peu nouveau sur android.
Trouver qui a enveloppé un tableau JSON de 22k éléments en XML (et en bonus dans * un élément *) et tirez dessus. Vous allez avoir beaucoup de mal à y faire face. –
L'API de requête à distance doit être fournie. – pierrotlefou
Je sais ... quelle douleur ... – jedgard