これが私のJSONリンクであり、その外観は次のとおりです。
{
"to": "CAD",
"rate": 1.0223997600000001,
"from": "USD",
"v": 5.1119988000000003
}
私はこの構文を試しました:
JSONObject o = new JSONObject(sourceString);
String from = o.getString("from");
しかし、うまくいきませんでした。
クラスを作成できます
public class Abc {
String to;
String rate;
String from;
String v;
}
次に、以下のコードを使用して解析できます
JsonObject obj= gson.fromJson(DATA,Abc.class);
ここで、DATAはgson文字列になります。
シミュレーターで実行していますか?または、デバイスで実行してからオフにしてインターネット接続で実行している場合は、機能します。
こんにちは、このコードを確認すると、ログ(エラー)が表示されます
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