如何解析LWUIT中的JSON字符串

时间:2011-09-08 14:10:48

标签: json java-me lwuit

如何解析LWUIT中的JSON对象,给我一些示例或一些链接,我可以从中读取此内容。假设我有下面给出的对象。 “{'guild':'Crimson','region':'us','realm':'Caelestrasz','timestamp':1311860040}”

4 个答案:

答案 0 :(得分:6)

Json示例代码:此代码适用于json。

 package com.ndtv.parser;
import java.io.IOException;
import java.io.InputStream;
import java.util.Vector;

import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;

import com.ndtv.callback.jsonActivelistener;
import com.ndtv.datatype.StockActiveItem;

 import json.me.JSONArray;
 import json.me.JSONException;
 import json.me.JSONObject;

 public class StockActiveParser {
public Vector jsonObjVector = new Vector();
public JSONArray arrayObj = null;
public String name,LastPrice;
protected jsonActivelistener mjsonListener;

public static boolean ParserCanceled = false;
public void setjsonListener(jsonActivelistener listener) {
    mjsonListener = listener;
}

// Non-blocking.
public void parser(final String url) {
    Thread t = new Thread() {
        public void run() {
            // set up the network connection
            try {
                jsonParse(url);
            }
            catch (Exception e) {
                mjsonListener.parserExceptionListing(e);
            }
            mjsonListener.parseDidFinishListing();
        }
    };
    t.start();
}

protected void jsonParse(String url) {
    StringBuffer stringBuffer = new StringBuffer();
    InputStream is = null;
    HttpConnection hc = null;
    System.out.println(url);
    try {
        hc = (HttpConnection)Connector.open(url);
        is = hc.openInputStream();
        int ch;
        while ((ch = is.read()) != -1) {
            stringBuffer.append((char) ch);
        }
    }

    catch (SecurityException se) {
        System.out.println("security exception:"+se);
    }
    catch (NullPointerException npe) {
        System.out.println("null pointer excception:"+npe);
    }
    catch (IOException ioe) {
        System.out.println("io exception:"+ioe);
    }
    try{
        hc.close();
        is.close();
    }catch(Exception e) {
        System.out.println("Error in MostActivePareser Connection close:"+e);
        e.printStackTrace();
    }

    String jsonData = stringBuffer.toString();
    try {
        JSONObject js = new JSONObject(jsonData);
        JSONArray js2 = js.getJSONArray("values");
        System.out.println(js2.length());


        for (int i = 0; i < js2.length(); i++) {
            StockActiveItem item = new StockActiveItem();

            JSONObject jsObj = js2.getJSONObject(i);
            item.name = jsObj.getString("name");
            item.last_traded_price = jsObj.getString("last_traded_price");
            item.change = jsObj.getString("change");
            item.price_diff = jsObj.getString("price_diff");
            item.chart=jsObj.getString("chart");
            item.company_id=jsObj.getString("company_id");
            mjsonListener.itemParsedListing(item);
        }
    } catch (JSONException e1) {
        System.out.println("Json Data error:"+e1);
        e1.printStackTrace();
    }
    catch (NullPointerException e) {
        System.out.println("null error:"+e);
    }
}
 }


public class StockActiveItem 
{
public String name ="";
public String last_traded_price ="";
public String change="";
public String price_diff ="";
public String chart="";
public String company_id="";
public String year_high="";
public String year_low="";

}

你只需要替换名称,例如公会替换名称。如果有任何疑问,请问我。

答案 1 :(得分:5)

使用LWUIT JSONParser并解析JSON格式字符串。只需使用最新的LWUIT 1.5中的 MIDP_IO.jar 即可。

答案 2 :(得分:0)

我能够在我的应用中成功使用以下给定链接中提供的示例代码。

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

BTW,最新的JSON ME库可以在这里找到:https://github.com/upictec/org.json.me/

答案 3 :(得分:0)

您可以使用JSON jar并在项目中导入它。之后创建一个JSON对象,您可以相应地使用该对象的optString或getString方法来获取值。