J’ai la chaîne suivante d’un JSON à partir d’un service Web et j’essaie de la convertir en un tableau JSON
{ "locations": [ { "lat": "23.053", "long": "72.629", "location": "ABC", "address": "DEF", "city": "Ahmedabad", "state": "Gujrat", "phonenumber": "1234567" }, { "lat": "23.053", "long": "72.629", "location": "ABC", "address": "DEF", "city": "Ahmedabad", "state": "Gujrat", "phonenumber": "1234567" }, { "lat": "23.053", "long": "72.629", "location": "ABC", "address": "DEF", "city": "Ahmedabad", "state": "Gujrat", "phonenumber": "1234567" }, { "lat": "23.053", "long": "72.629", "location": "ABC", "address": "DEF", "city": "Ahmedabad", "state": "Gujrat", "phonenumber": "1234567" }, { "lat": "23.053", "long": "72.629", "location": "ABC", "address": "DEF", "city": "Ahmedabad", "state": "Gujrat", "phonenumber": "1234567" } ] }
J’ai validé cette chaîne en ligne, cela semble correct. Maintenant, j’utilise le code suivant dans le développement Android pour utiliser
JSONArray jsonArray = new JSONArray(readlocationFeed);
Cette exception de lancement pour la saisie de type.
Je n’ai pas compris ce problème car je suis novice sur Android aussi bien que Java.
Ici, vous obtenez JSONObject afin de changer
JSONArray jsonArray = new JSONArray(readlocationFeed);
ligne avec suite
JSONObject jsnobject = new JSONObject(readlocationFeed);
et après
JSONArray jsonArray = jsnobject.getJSONArray("locations"); for (int i = 0; i < jsonArray.length(); i++) { JSONObject explrObject = jsonArray.getJSONObject(i); }
Chaîne d’entrée
[ { "userName": "sandeep", "age": 30 }, { "userName": "vivan", "age": 5 } ]
Un moyen simple de convertir une chaîne en JSON
public class Test { public static void main(Ssortingng[] args) throws JSONException { Ssortingng data = "[{\"userName\": \"sandeep\",\"age\":30},{\"userName\": \"vivan\",\"age\":5}] "; JSONArray jsonArr = new JSONArray(data); for (int i = 0; i < jsonArr.length(); i++) { JSONObject jsonObj = jsonArr.getJSONObject(i); System.out.println(jsonObj); } } }
Sortie
{"userName":"sandeep","age":30} {"userName":"vivan","age":5}
Utiliser json lib: –
Ssortingng data="[{"A":"a","B":"b","C":"c","D":"d","E":"e","F":"f","G":"g"}]"; Object object=null; JSONArray arrayObj=null; JSONParser jsonParser=new JSONParser(); object=jsonParser.parse(data); arrayObj=(JSONArray) object; System.out.println("Json object :: "+arrayObj);
En utilisant la librairie GSON: –
Gson gson = new Gson(); Ssortingng data="[{\"A\":\"a\",\"B\":\"b\",\"C\":\"c\",\"D\":\"d\",\"E\":\"e\",\"F\":\"f\",\"G\":\"g\"}]"; JsonParser jsonParser = new JsonParser(); JsonArray jsonArray = (JsonArray) jsonParser.parse(data);
vous devrez convertir la chaîne donnée en JSONObject
au lieu de JSONArray
car la chaîne actuelle contient JsonObject
tant qu’élément racine au lieu de JsonArray
:
JSONObject jsonObject = new JSONObject(readlocationFeed);
try { Log.e("log_tag", "Error in convert Ssortingng" + result.toSsortingng()); JSONObject json_data = new JSONObject(result); Ssortingng status = json_data.getSsortingng("Status"); { Ssortingng data = json_data.getSsortingng("locations"); JSONArray json_data1 = new JSONArray(data); for (int i = 0; i < json_data1.length(); i++) { json_data = json_data1.getJSONObject(i); String lat= json_data.getString("lat"); String lng= json_data.getString("long"); } }
Ssortingng b = "[" + readlocationFeed + "]"; JSONArray jsonArray1 = new JSONArray(b); jsonarray_length1 = jsonArray1.length(); for (int i = 0; i < jsonarray_length1; i++) { }
ou le convertir en JSONOBJECT
JSONObject jsonobj = new JSONObject(readlocationFeed); JSONArray jsonArray = jsonobj.getJSONArray("locations");
si la réponse est comme ça
"GetDataResult": "[{\"UserID\":1,\"DeviceID\":\"d1254\",\"MobileNO\":\"056688\",\"Pak1\":true,\"pak2\":true,\"pak3\":false,\"pak4\":true,\"pak5\":true,\"pak6\":false,\"pak7\":false,\"pak8\":true,\"pak9\":false,\"pak10\":true,\"pak11\":false,\"pak12\":false}]"
vous pouvez parsingr comme ça
JSONObject jobj=new JSONObject(response); Ssortingng c = jobj.getSsortingng("GetDataResult"); JSONArray jArray = new JSONArray(c); deviceId=jArray.getJSONObject(0).getSsortingng("DeviceID");
ici la taille de JsonArray est 1. Sinon, vous devez utiliser pour la boucle pour obtenir des valeurs.
Vous pouvez effectuer les opérations suivantes:
JSONArray jsonArray = jsnobject.getJSONArray("locations"); for (int i = 0; i < jsonArray.length(); i++) { JSONObject explrObject = jsonArray.getJSONObject(i); }
Si JSON suivant de service Web, Json Array comme réponse:
[3] 0: { id: 2 name: "a561137" password: "test" firstName: "abhishek" lastName: "ringsia" organization: "bbb" }- 1: { id: 3 name: "a561023" password: "hello" firstName: "hello" lastName: "hello" organization: "hello" }- 2: { id: 4 name: "a541234" password: "hello" firstName: "hello" lastName: "hello" organization: "hello" }
Pour l’accepter d’abord en tant que tableau Json, alors en lisant son object, vous devez utiliser Object Mapper.readValue, car l’object Json est toujours en chaîne.
List list = new ArrayList (); JSONArray jsonArr = new JSONArray(response); for (int i = 0; i < jsonArr.length(); i++) { JSONObject jsonObj = jsonArr.getJSONObject(i); ObjectMapper mapper = new ObjectMapper(); User usr = mapper.readValue(jsonObj.toString(), User.class); list.add(usr); }
mapper.read est la fonction correcte, si vous utilisez mapper.convert (param, param). Cela vous donnera une erreur.
//A very simple way to convert import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonParser; class Usuario { private Ssortingng username; private Ssortingng email; private Integer credits; private Ssortingng twitter_username; public Ssortingng getUsername() { return username; } public void setUsername(Ssortingng username) { this.username = username; } public Ssortingng getEmail() { return email; } public void setEmail(Ssortingng email) { this.email = email; } public Integer getCredits() { return credits; } public void setCredits(Integer credits) { this.credits = credits; } public Ssortingng getTwitter_username() { return twitter_username; } public void setTwitter_username(Ssortingng twitter_username) { this.twitter_username = twitter_username; } @Override public Ssortingng toSsortingng() { return "UserName: " + this.getUsername() + " Email: " + this.getEmail(); }
}
/* * put ssortingng into file jsonFileArr.json * [{"username":"Hello","email":"hello@email.com","credits" * :"100","twitter_username":""}, * {"username":"Goodbye","email":"goodbye@email.com" * ,"credits":"0","twitter_username":""}, * {"username":"mlsilva","email":"mlsilva@email.com" * ,"credits":"524","twitter_username":""}, * {"username":"fsouza","email":"fsouza@email.com" * ,"credits":"1052","twitter_username":""}] */ public class TestaGsonLista { public static void main(Ssortingng[] args) { Gson gson = new Gson(); try { BufferedReader br = new BufferedReader(new FileReader( "C:\\Temp\\jsonFileArr.json")); JsonArray jsonArray = new JsonParser().parse(br).getAsJsonArray(); for (int i = 0; i < jsonArray.size(); i++) { JsonElement str = jsonArray.get(i); Usuario obj = gson.fromJson(str, Usuario.class); System.out.println(obj); System.out.println(str); System.out.println("-------"); } } catch (IOException e) { e.printStackTrace(); } }
}