2

これが私のJSONリンクであり、その外観は次のとおりです

{
"to": "CAD", 
"rate": 1.0223997600000001, 
"from": "USD", 
"v": 5.1119988000000003
}

私はこの構文を試しました:

JSONObject o = new JSONObject(sourceString);
String from = o.getString("from");

しかし、うまくいきませんでした。

4

3 に答える 3

1

クラスを作成できます

public class Abc {
String to;
String rate;
String from;
String v;
}

次に、以下のコードを使用して解析できます

JsonObject obj= gson.fromJson(DATA,Abc.class);

ここで、DATAはgson文字列になります。

于 2013-03-19T05:30:56.963 に答える
1

シミュレーターで実行していますか?または、デバイスで実行してからオフにしてインターネット接続で実行している場合は、機能します。

于 2013-03-19T05:34:36.340 に答える
0

こんにちは、このコードを確認すると、ログ(エラー)が表示されます

protected void getJSONFromURL(String string) {
        // TODO Auto-generated method stub
        string = "http://rate-exchange.appspot.com/currency?from=USD&to=CAD&q=5";
        String is = null;
        try {
            HttpClient httpclient = new DefaultHttpClient();
            HttpGet Get = new HttpGet(string);

            HttpResponse responce = httpclient.execute(Get);
            HttpEntity entity = responce.getEntity();
            is = EntityUtils.toString(entity, "UTF-8");
            Log.e("responce-->", "" + is.toString());

            if (!is.toString().equalsIgnoreCase("")) {
                JSONObject ob = new JSONObject(is.toString());
                String to = ob.getString("to");
                Log.e("to", "" + to);
                String from = ob.getString("from");
                Log.e("from", "" + from);
                double rate = ob.getDouble("rate");
                Log.e("rate", "" + rate);
                double v = ob.getDouble("v");
                Log.e("v", "" + v);
            }
        } catch (Exception e) {
            // TODO: handle exception
            Log.d("call http :", e.getMessage().toString());
            is = null;
        }

    }

3.0 以上の OS を使用している場合は、このコードも含めてください。

int SDK_INT = android.os.Build.VERSION.SDK_INT;

if (SDK_INT>8){

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();

StrictMode.setThreadPolicy(policy); 

}

あなたの結果はここにあります:

03-19 11:23:22.745: E/responce-->(811): {"to": "CAD", "rate": 1.0220998400000001, "from": "USD", "v": 5.1104992000000005}
03-19 11:23:22.745: E/to(811): CAD
03-19 11:23:22.776: E/from(811): USD
03-19 11:23:22.776: E/rate(811): 1.02209984
03-19 11:23:22.791: E/v(811): 5.1104992000000005
于 2013-03-19T05:54:57.183 に答える