How to get and set JSONObject, JSONArray in J2ME

I am new to JSON programming in J2ME.

I found that Json is used to exchange data like XML.

I want to know about sharing in an Array from JSONtoObject and vice versa

Below is the code in which I convert from JSON to Object and vice versa.

But I do not know how to do this for a complex data structure, such as arrays, etc.

// App Loader

import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; public class AppLoader extends MIDlet { public AppLoader() { // TODO Auto-generated constructor stub // Converting Object to JSON UserData data=new UserData(); data.setId(10); data.setName("Yatin"); data.setDescription("Testing JSON in J2ME"); System.out.println("Convert to JSON"+data.toJSON()); //Convert JSON to Object String sample="{\"id\":99,\"name\":\"Tester\",\"description\":\"This is JSON Data\"}"; UserData data2=new UserData(); data2.fromJSON(sample); System.out.println("Convert from JSON "+data2); } protected void destroyApp(boolean arg0) throws MIDletStateChangeException { // TODO Auto-generated method stub } protected void pauseApp() { // TODO Auto-generated method stub } protected void startApp() throws MIDletStateChangeException { // TODO Auto-generated method stub } } 

In this class, I created getters and setters for the String type, and then created a JsonObject to create a JSON object to create a JSON object, and then vice versa according to toJSON() and fromJSON() functions

// user data class

 import org.json.me.JSONException; import org.json.me.JSONObject; public class UserData { private int id; private String name; private String description; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String toString() { return getId()+"-"+getName()+"-"+getDescription(); } public String toJSON() { // TODO Auto-generated method stub JSONObject inner=new JSONObject(); try { inner.put("id",getId()); inner.put("description", getDescription()); inner.put("name", getName()); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } return inner.toString(); } public void fromJSON(String jsonString) { // TODO Auto-generated method stub try { JSONObject json=new JSONObject(jsonString); setId(json.getInt("id")); setDescription(json.getString("description")); setName(json.getString("name")); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } 

I found a better link for this question

http://jimmod.com/blog/2011/09/java-me-j2me-json-implementation-for-array-object/

+1
source share
3 answers

Check this link for another sample JSON dataset

One example for your understanding: JSON String with arrays

 { "id": "0001", "type": "donut", "name": "Cake", "ppu": 0.55, "batters": { "batter": [ { "id": "1001", "type": "Regular" }, { "id": "1002", "type": "Chocolate" }, { "id": "1003", "type": "Blueberry" }, { "id": "1004", "type": "Devil Food" } ] }, "topping": [ { "id": "5001", "type": "None" }, { "id": "5002", "type": "Glazed" }, { "id": "5005", "type": "Sugar" }, { "id": "5007", "type": "Powdered Sugar" }, { "id": "5006", "type": "Chocolate with Sprinkles" }, { "id": "5003", "type": "Chocolate" }, { "id": "5004", "type": "Maple" } ] } 

To check whether it is correct or not check this link (JSON Validator)

To check JSON Viewer

So, look at the code:

 String json = "{\"id\":\"0001\",\"type\":\"donut\",\"name\":\"Cake\"" + ",\"ppu\":0.55,\"batters\":{\"batter\":[" + "{\"id\":\"1001\",\"type\":\"Regular\"},{\"id\":\"1002\"," + "\"type\":\"Chocolate\"},{\"id\":\"1003\"," + "\"type\": \"Blueberry\" },{ \"id\": \"1004\", " + "\"type\": \"Devil Food\" } ] }," + " \"topping\":[" + "{ \"id\": \"5001\", \"type\": \"None\" }," + "{ \"id\": \"5002\", \"type\": \"Glazed\" }," + "{ \"id\": \"5005\", \"type\": \"Sugar\" }," + "{ \"id\": \"5007\", \"type\": \"Powdered Sugar\" }," + " { \"id\": \"5006\", \"type\": \"Chocolate with Sprinkles\" }," + "{ \"id\": \"5003\", \"type\": \"Chocolate\" }," + "{ \"id\": \"5004\", \"type\": \"Maple\" }]}"; try { JSONObject root = new JSONObject(json); String id = root.getString("id"); double dd = root.getDouble("ppu"); System.out.println(""+id); System.out.println(""+dd); JSONObject batters=new JSONObject(root.getString("batters")); JSONArray batter=new JSONArray(batters.getString("batter")); for(int j=0;j<batter.length();j++){ JSONObject navgt_batter=new JSONObject(batter.getString(j)); String id_batter= navgt_batter.getString("id"); String type_batter=navgt_batter.getString("type"); System.out.println(""+id+" "+type_batter); } JSONArray topping=root.getJSONArray("topping"); for(int k=0;k<topping.length();k++){ JSONObject navgt_batter=new JSONObject(topping.getString(k)); String id_top =navgt_batter.getString("id"); String type_top=navgt_batter.getString("type"); System.out.println(""+id_top+" "+type_top); } } catch (JSONException ex) { ex.printStackTrace(); } 

You can use your concept to set up and retrieve data similar to the above. complex data structure is always easily processed in JSON, do not worry about it. Thanks

+4
source

In the link below http://jimmod.com/blog/2011/09/java-me-j2me-json-implementation-for-array-object/

they explained how JSONArray is used

 public void fromJSON(String jsonString) { try { JSONObject json = new JSONObject(jsonString); setApi_status(json.getString("api_status")); JSONArray jsonArray = json.getJSONArray("threads"); int total = jsonArray.length(); ThreadData[] threads = new ThreadData[total]; for (int i=0;i<total;i++) { String threadsJSON = jsonArray.getString(i); threads[i] = new ThreadData(); threads[i].fromJSON(threadsJSON); } setThreads(threads); } catch (JSONException ex) { ex.printStackTrace(); } } public String toJSON() { JSONObject inner = new JSONObject(); try { inner.put("api_status", getApi_status()); JSONArray jsonArray = new JSONArray(); ThreadData[] threads = getThreads(); for (int i=0;i<threads.length;i++) { jsonArray.put(threads[i].toJSON()); } inner.put("threads", jsonArray); } catch (JSONException ex) { ex.printStackTrace(); } return inner.toString(); } 

Where Threaddata is the class defined for JSONObject and it was created in an array object check the link

+1
source

It's not like that at all. All you need to do is just skip the array ... I have added tags to your sample JSON data.

  String sample = "{\"id\":99,\"name\":\"Tester\",\"description\":\"This is JSON Data\",\"tags\":[\"eat\",\"swim\",\"sleep\"]}"; try { JSONObject objSample = new JSONObject(sample); JSONArray array = new JSONArray(objSample.getJSONArray("tags").toString()); System.out.println(objSample.get("id").toString()); System.out.println(objSample.get("name").toString()); System.out.println(objSample.get("description").toString()); for (int i = 0; i < array.length(); i++) { System.out.println(array.get(i).toString()); } } catch (Exception e) { System.out.println(e.getMessage()); } } 

Output

  99 Tester This is JSON Data eat swim sleep 

I hope this helps

Thanks :)

0
source

Source: https://habr.com/ru/post/1339660/


All Articles