簡體   English   中英

如何在J2ME中獲取和設置JSONObject,JSONArray

[英]How to get and set JSONObject , JSONArray in J2ME

我是J2ME中JSON編程的新手。

我發現Json就像XML一樣用於交換數據。

我想了解JSONtoObject中Array對象中的交換,反之亦然

下面寫的是我從JSON轉換為Object的代碼,反之亦然。

但是我不知道如何處理數組等復雜的數據結構。

// 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

    }

}

在此類中,我為對象的String類型創建了getter和setter方法,然后創建了JsonObject以創建JSON對象以創建JSON對象,然后按照函數toJSON()fromJSON()

//用戶數據類

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();
        }



    }

}

我找到了這個問題的更好的鏈接

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

檢查此鏈接以獲取其他JSON數據集示例

您理解的一個示例:::嵌套有數組的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's 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" }
        ]
}

要檢查其有效與否, 請檢查此鏈接(JSON驗證程序)

檢查JSON查看器

所以這是代碼看看:

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's 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();
        }

您可以像上面一樣使用相同的概念來設置和獲取數據。 復雜的數據結構始終易於在JSON中處理,不必擔心。 謝謝

在下面的鏈接中http://jimmod.com/blog/2011/09/java-me-j2me-json-implementation-for-array-object/

他們已經解釋了如何使用JSONArray

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();
    }

其中Threaddata是為JSONObject定義的類,並且已在數組對象中創建,請查看鏈接

幾乎是一樣的方式..您只需要遍歷數組...我在示例JSON數據中添加了標簽

    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());
    }
}

輸出量

    99
    Tester
    This is JSON Data
    eat
    swim
    sleep

我希望這有幫助

謝謝 :)

暫無
暫無

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

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