我正在制作货币转换器
我已经做了这个部分...我正在获取JSON文件,我可以在LOGCAT上看到它...现在我的问题是我如何获得JSON将其转换为字符串并将其解析为float / double让我操纵它们......
这是迄今为止的代码
import com.actionbarsherlock.app.SherlockActivity;
import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends SherlockActivity {
private static final String API_URL = "my own api";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btnConvert = (Button)findViewById(R.id.buttonConvert);
btnConvert.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
AsyncHttpClient client = new AsyncHttpClient();
client.get(API_URL, new AsyncHttpResponseHandler() {
@Override
public void onFailure(Throwable arg0, String arg1) {
// TODO Auto-generated method stub
super.onFailure(arg0, arg1);
}
@Override
public void onFinish() {
// TODO Auto-generated method stub
super.onFinish();
}
@Override
public void onStart() {
// TODO Auto-generated method stub
super.onStart();
}
@Override
public void onSuccess(String response) {
Log.i("CC", response);
}
});
}
});
}
}
我现在真的迷失了,我的家门口有一个截止日期
答案 0 :(得分:1)
json解析依赖于json字符串,如果你的字符串以[这意味着它是数组开头,如果它以此开头{表示它是对象。如果是数组那么就这样得到它
JSONArray ja=new JSONArray(string);
如果它是对象,那么就像
一样JSONObject jo=new JSONObject(string)
现在接下来的事情是获取此数组或对象的内部值。如果你在数组中,那么通过索引值获取对象
JSONObject jo=ja.getJSONObject(index);
现在将有三种情况,它可能是数组,第二种情况,它将是对象,第三种值将是您想要的字符串。如果它是数组得到它
JSONArray ja1=ja.getJSONArray(arraynamefromyourjsonstring);
现在,如果它是对象,那么就像
那样JSONObject jo1=ja.getJSONObject(objectnamefromyourjsonstring);
,最后一个是你想要的字符串
String str=jo1.getString(stringnamefromyourjsonstring)
答案 1 :(得分:0)
我使用Google Gson图书馆取得了巨大成功。这很简单,也许重要的是使用Apache V2许可证。 Google Gson
答案 2 :(得分:0)
首先,获取JSONObject,然后从中提取字符串,如下所示,并将其解析为所需的基本类型:
JSONObject c = json.getJSONObject(i);
String vtype = c.getString(TAG_VTYPE);
float f=Float.parseFloat(vtype);
这只是一个例子。显然你会根据你的需要替换i,tag_type。
答案 3 :(得分:0)
使用org.json库:
Integer i = null;
try {
JSONObject o = new JSONObject(response);
i = o.getInt("number_key");
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(i != null) {
// We're good
}