Java 打印到“日志”;“条件”;

Java 打印到“日志”;“条件”;,java,android,json,sdk,Java,Android,Json,Sdk,最新更新 package com.karanvir.com; 导入android.os.AsyncTask; 导入android.os.Bundle; 导入android.support.design.widget.FloatingActionButton; 导入android.support.design.widget.Snackbar; 导入android.support.v7.app.AppActivity; 导入android.support.v7.widget.Toolbar; 导入

最新更新

package com.karanvir.com;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.support.design.widget.FloatingActionButton;
导入android.support.design.widget.Snackbar;
导入android.support.v7.app.AppActivity;
导入android.support.v7.widget.Toolbar;
导入android.util.Log;
导入android.view.view;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.TextView;
导入org.json.JSONArray;
导入org.json.JSONObject;
导入java.io.InputStream;
导入java.io.InputStreamReader;
导入java.net.HttpURLConnection;
导入java.net.URL;
公共类MainActivity扩展了AppCompatActivity{
编辑文本城市;
按钮去;
文本视图结果窗口;
字符串文本;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar Toolbar=(Toolbar)findViewById(R.id.Toolbar);
城市=(EditText)findViewById(R.id.EditText);
go=(按钮)findViewById(R.id.Button);
设置支持操作栏(工具栏);
DownloadTask任务=新建DownloadTask();
resultofw=(TextView)findViewById(R.id.TextView);
任务。执行(“http://api.apixu.com/v1/current.json?key=76d62bf509e64633a4970055170706&q=“+city.toString());
}
公共类DownloadTask扩展了AsyncTask{
@凌驾
受保护的字符串doInBackground(字符串…URL){
字符串结果=”;
网址;
HttpURLConnection-urlConnection=null;
试一试{
url=新url(url[0]);
urlConnection=(HttpURLConnection)url.openConnection();
InputStream in=urlConnection.getInputStream();
InputStreamReader reader=新的InputStreamReader(in);
int data=reader.read();
while(数据!=-1){
当前字符=(字符)数据;
结果+=电流;
data=reader.read();
}
返回结果;
}捕获(例外e){
e、 printStackTrace();
}
返回null;
}
@凌驾
受保护的void onPostExecute(字符串结果){
super.onPostExecute(结果);
//将结果转换为json对象
试一试{
JSONObject JSONObject=新JSONObject(结果);
//从结果JSONObject获取当前JSONObject
JSONObject currentJSONObject=JSONObject.getJSONObject(“当前”);
//现在从当前JSONObject获取条件JSONObject
JSONObject条件JSONObject=currentJSONObject.getJSONObject(“条件”);
text=conditionJSONObject.getString(“text”);
//现在打印条件JSONObject
Log.i(“网站内容”,“条件json对象:+text.toString());
JSONArray arr=新的JSONArray(conditionJSONObject.toString());
}捕获(例外e){
}
}
}
公共作废单击(查看){
resultofw.setText(文本);
}

}
Log.d(“网站内容”,jsonObject.getString(“条件”).toString())

实际上,
condition
是一个
JSONObject
,所以您需要从结果JSONObject解析它,如下所示

    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);
        //conver result into json object
        try{
            JSONObject jsonObject=new JSONObject(result);

            //get current JSONObject from result JSONObject
            JSONObject currentJSONObject = jsonObject.getJSONObject("current");

            //Now get condition JSONObject from current JSONObject
            JSONObject conditionJSONObject = currentJSONObject.getJSONObject("condition");

            //Now print condition JSONObject
            Log.i("website content", "condition json object : " + conditionJSONObject.toString());

        } catch (Exception e){

        }

    }
更新:

只需调用
conditionJSONObject
上的
getString
方法,即可获得如下所示的“text”值

String text = conditionJSONObject.getString("text");

尝试Log.d(“网站内容”,jsonObject.getString(“条件”).toString());显然,您应该学习一些json基础知识。。。条件属性不在根级别Hey感谢您的代码工作,如果您不介意回答sirdude您的问题,我还有一个问题,所以我终于让它工作了,但它只适用于一个城市。我如何做到这一点,使它的工作,一遍又一遍,每次我添加一个新的文本到它。而且这不仅仅反映了维多利亚市的天气。我更新了代码bro check Out我正在考虑将执行代码移动到点击方法?你能详细描述一下你的问题吗,或者只是问另一个问题?并给出链接。所以我可以解释它的解决方案。好的,我的问题是,当我运行我的应用程序到目前为止。结果是,当我点击我的按钮时,我只得到一个城市的结果,这是我第一次运行我的应用程序时输入的。然后,不管我试图进入一个新的城市寻找天气,我得到了第一个城市的结果一遍又一遍。