Android JSONParser获取带花括号的完整JSON文件

Android JSONParser获取带花括号的完整JSON文件,android,json,Android,Json,我正在尝试实现从服务器获取JSON数据的示例JSON数据应用程序 我得到了完整的JSON文件我的编码有什么问题 我正在关注youtube教程,但他成功了,但我得到了完整的JSON文件 这是JSON服务器端文件 { "movies" :[ { "movie" : "Avenger", "year" : 2012 } ] } 这是安卓应用程序的代码 package com.yog.jsonparser; import android.os.AsyncTask; import android.s

我正在尝试实现从服务器获取JSON数据的示例JSON数据应用程序

我得到了完整的JSON文件我的编码有什么问题

我正在关注youtube教程,但他成功了,但我得到了完整的JSON文件

这是JSON服务器端文件

{
"movies" :[
{
 "movie" : "Avenger",
"year" : 2012
}
]
}
这是安卓应用程序的代码

package com.yog.jsonparser;

import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.webkit.URLUtil;
import android.widget.Button;
import android.widget.TextView;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.net.URL;

public class MainActivity extends AppCompatActivity {
    TextView tvData;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    Button btnHit = (Button) findViewById(R.id.btnHit);
         tvData = (TextView)findViewById(R.id.tvJsonItem);
btnHit.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        new JSONTask().execute("http://myDomainName.com/getData.txt");
    }
});
    }

    public class JSONTask extends AsyncTask<String,String,String>{
        HttpURLConnection connection = null;
        BufferedReader reader = null;
        URI url;
        StringBuffer buffer;
        @Override
        protected String doInBackground(String... params){
         try{

             //URL OF REQUESTED PAGE
             url=new URI(params[0]);
             connection = (HttpURLConnection) (new URL(params[0]).openConnection());
             connection.connect();
             InputStream stream=connection.getInputStream();
             reader=new BufferedReader(new InputStreamReader(stream));
              buffer=new StringBuffer();
             String line;
             while((line =reader.readLine())!=null){
                 buffer.append(line);
             }
             String finalJSON=buffer.toString();
             JSONObject parentOject = new JSONObject(finalJSON);
             JSONArray parentArray = parentOject.getJSONArray("movies");
             JSONObject finalObject= parentArray.getJSONObject(0);
             String movieName= finalObject.getString("movie");
             int year=finalObject.getInt("year");
           return movieName + "-" + year;
         } catch (URISyntaxException e) {
             e.printStackTrace();
         } catch (IOException e) {
             e.printStackTrace();
         } catch (JSONException e) {
             e.printStackTrace();
         } finally {


             if(connection !=null){
                 connection.disconnect();
             }
             try{
                 if(reader !=null){
                     reader.close();
                 }
             } catch (IOException e) {
                 e.printStackTrace();
             }

         }

         return null;

     }



        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            tvData.setText(buffer.toString());
        }
    }

}
package com.yog.jsonparser;
导入android.os.AsyncTask;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.view.view;
导入android.webkit.URLUtil;
导入android.widget.Button;
导入android.widget.TextView;
导入org.json.JSONArray;
导入org.json.JSONException;
导入org.json.JSONObject;
导入java.io.BufferedReader;
导入java.io.IOException;
导入java.io.InputStream;
导入java.io.InputStreamReader;
导入java.net.HttpURLConnection;
导入java.net.URI;
导入java.net.URISyntaxException;
导入java.net.URL;
导入java.net.URL;
公共类MainActivity扩展了AppCompatActivity{
文本视图数据;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
按钮btnHit=(按钮)findViewById(R.id.btnHit);
tvData=(TextView)findviewbyd(R.id.tvJsonItem);
setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
新建JSONTask()。执行(“http://myDomainName.com/getData.txt");
}
});
}
公共类JSONTask扩展了异步任务{
HttpURLConnection=null;
BufferedReader reader=null;
uriurl;
字符串缓冲区;
@凌驾
受保护的字符串doInBackground(字符串…参数){
试一试{
//请求页面的URL
url=新URI(参数[0]);
connection=(HttpURLConnection)(新URL(参数[0]).openConnection());
connection.connect();
InputStream=connection.getInputStream();
reader=新的BufferedReader(新的InputStreamReader(流));
buffer=新的StringBuffer();
弦线;
而((line=reader.readLine())!=null){
buffer.append(行);
}
字符串finalJSON=buffer.toString();
JSONObject parentProject=新的JSONObject(finalJSON);
JSONArray parentArray=parentobject.getJSONArray(“电影”);
JSONObject finalObject=parentArray.getJSONObject(0);
String movieName=finalObject.getString(“电影”);
int year=finalObject.getInt(“年”);
返回movieName+“-”+年;
}捕获(URISyntaxException e){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}捕获(JSONException e){
e、 printStackTrace();
}最后{
if(连接!=null){
连接断开();
}
试一试{
if(读卡器!=null){
reader.close();
}
}捕获(IOE异常){
e、 printStackTrace();
}
}
返回null;
}
@凌驾
受保护的void onPostExecute(字符串s){
super.onPostExecute(s);
tvData.setText(buffer.toString());
}
}
}
电流输出:

{“电影”:[{“电影”:“复仇者”,“年份”:2012}]

预期产出: 复仇者
2012

如下更改您的
onPostExecute
方法

@Override
protected void onPostExecute(String s) {
    super.onPostExecute(s);
    tvData.setText(s);
}
这里
s
将是
doInBackground
的返回语句。“movieName+”-“+year;

您将在
TextView
中获得
{“电影”:[{“电影”:“复仇者”,“年份”:2012}
,因为您正在将缓冲区的输出设置为
TextView
。更改您的
onPostExecute
,如下所示:

@Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            if(s != null){
            tvData.setText(s);
            }else{
            //// Some error occurred
            tvData.setText(buffer.toString());
            }

        }

你的问题是什么?我得到这个输出{“电影”:[{“电影”:“复仇者”,“2012年”}},我只想要复仇者2012作为输出::@EricB.Thank a lot@EricB.ohh shit:(小错误,非常抱歉,伙计们:(对于这样的nooby que:quo:非常感谢。)BRO@YogeshGosavi哈哈..有时候会发生..;-):P是的,当您不熟悉任何环境时:3:)