Java org.json.JSONException:没有用于尝试解析json的值
大家好,我正在尝试解析一个json,但是文本永远不会显示!日志中写道:Java org.json.JSONException:没有用于尝试解析json的值,java,android,json,Java,Android,Json,大家好,我正在尝试解析一个json,但是文本永远不会显示!日志中写道: 06-24 23:28:22.681: W/System.err(6271): org.json.JSONException: No value for production_companies 06-24 23:28:22.681: W/System.err(6271): at org.json.JSONObject.get(JSONObject.java:355) 06-24 23:28:22.682: W/Sy
06-24 23:28:22.681: W/System.err(6271): org.json.JSONException: No value for production_companies
06-24 23:28:22.681: W/System.err(6271): at org.json.JSONObject.get(JSONObject.java:355)
06-24 23:28:22.682: W/System.err(6271): at org.json.JSONObject.getJSONObject(JSONObject.java:574)
06-24 23:28:22.682: W/System.err(6271): at com.example.movieinfo.MainActivity$MyAsyncTask.doInBackground(MainActivity.java:126)
06-24 23:28:22.682: W/System.err(6271): at com.example.movieinfo.MainActivity$MyAsyncTask.doInBackground(MainActivity.java:1)
06-24 23:28:22.683: W/System.err(6271): at android.os.AsyncTask$2.call(AsyncTask.java:288)
06-24 23:28:22.683: W/System.err(6271): at java.util.concurrent.FutureTask.run(FutureTask.java:237)
06-24 23:28:22.683: W/System.err(6271): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
06-24 23:28:22.684: W/System.err(6271): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
06-24 23:28:22.684: W/System.err(6271): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
06-24 23:28:22.685: W/System.err(6271): at java.lang.Thread.run(Thread.java:841)
我不知道为什么,这是我的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
getSupportActionBar().setCustomView(R.layout.actionbar);
android.app.ActionBar bar = getActionBar();
bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#3498db")));
ImageView search = (ImageView) findViewById(R.id.search);
box = (EditText) findViewById(R.id.editText1);
search.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
url = "https://api.themoviedb.org/3/movie/" + box.getText().toString() + "?api_key=xxx";
new MyAsyncTask().execute();
}
});
}
private class MyAsyncTask extends AsyncTask<String, String, String>{
@Override
protected String doInBackground(String... arg0) {
//Creamos el cliente HTTP
DefaultHttpClient httpclient = new DefaultHttpClient(new BasicHttpParams());
//Pasamos por POST la url
HttpPost htppost = new HttpPost(url);
//Definimos que tipo de dato nos pasan
htppost.setHeader("Content-type", "application/json");
//Leer data del URL
InputStream inputStream = null;
String result = null;
try{
//Pedir una respuesta de la pagina
HttpResponse response = httpclient.execute(htppost);
//Guarda todo el contenido
HttpEntity entity = response.getEntity();
//Obtenog el contenido
inputStream = entity.getContent();
//Lee todo el contenido
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"), 8);
//Guarda todo ahi
StringBuilder theStringBuilder = new StringBuilder();
String line = null;
//Aca leemos todo
while((line = reader.readLine()) != null){
theStringBuilder .append(line + "\n");
}
//Pasamos todo a result
result = theStringBuilder.toString();
}catch(Exception e){
e.printStackTrace();
}finally{
try{
//Si se guardo algo cerramos el input stream
if(inputStream != null){
inputStream.close();
}else{
Log.e("No funciono", "Cerrar el inputStream");
}
}catch(Exception e){
e.printStackTrace();
}
}
JSONObject jsonObject;
try{
// Hacemos que el resultado sea un JSONObject
jsonObject = new JSONObject(result);
// Buscamos el objeto query "Objeto"
JSONObject queryJSONOBject = jsonObject.getJSONObject("production_companies");
// Finalmente obtenemos los strings
titulo = jsonObject.getString("original_title");
descripcion = queryJSONOBject.getString("name");
imageUrl = jsonObject.getString("poster_path");
}catch(JSONException e){
e.printStackTrace();
}
return result;
}
@Override
protected void onPostExecute(String result) {
Toast.makeText(getApplicationContext(), titulo, Toast.LENGTH_SHORT).show();
TextView line1 = (TextView) findViewById(R.id.titulo);
TextView line2 = (TextView) findViewById(R.id.descr);
line1.setText(titulo);
line2.setText(descripcion);
}
}
如果有人能告诉我出了什么问题,我将不胜感激
感谢advanced
production\u Companys
是一个JSONArray
而不是JSONObject
,因此解析器正确地告诉您,对于键production\u Companys
production\u Companys
是一个JSONArray
而不是JSONObject
,因此,解析器正确地告诉您,对于键生产公司
生产公司
没有JSONObject
是JSONArray
而不是JSONObject
,因此,解析器正确地告诉您,对于键生产公司
生产公司
没有JSONObject
是JSONArray
而不是JSONObject
,因此,解析器正确地告诉您,对于关键的生产公司没有JSONObject
,请尝试以下代码:-
try
{
JSONObject jsonObject = new JSONObject(result);
// Buscamos el objeto query "Objeto"
JSONArray queryJSONOBject = jsonObject.getJSONArray("production_companies");
// Finalmente obtenemos los strings
String descripcion = "" ;//= new String[queryJSONOBject.length()];
for (int i = 0; i < queryJSONOBject.length(); i++)
{
JSONObject j = queryJSONOBject.getJSONObject(i);
descripcion = descripcion + j.getString("name")+ " / ";
}
String titulo = jsonObject.getString("original_title");
String imageUrl = jsonObject.getString("poster_path");
System.out.println(titulo);
System.out.println(imageUrl);
System.out.println(descripcion);
}
catch (Exception e)
{
// TODO: handle exception
}
试试看
{
JSONObject JSONObject=新JSONObject(结果);
//Buscamos el objeto查询“objeto”
JSONArray queryJSONOBject=jsonObject.getJSONArray(“生产公司”);
//最终结果
String description=“;//=新字符串[queryJSONOBject.length()];
对于(int i=0;i
您的产品公司数据来自json数组,您将产品公司数据视为json对象。请尝试以下代码:-
try
{
JSONObject jsonObject = new JSONObject(result);
// Buscamos el objeto query "Objeto"
JSONArray queryJSONOBject = jsonObject.getJSONArray("production_companies");
// Finalmente obtenemos los strings
String descripcion = "" ;//= new String[queryJSONOBject.length()];
for (int i = 0; i < queryJSONOBject.length(); i++)
{
JSONObject j = queryJSONOBject.getJSONObject(i);
descripcion = descripcion + j.getString("name")+ " / ";
}
String titulo = jsonObject.getString("original_title");
String imageUrl = jsonObject.getString("poster_path");
System.out.println(titulo);
System.out.println(imageUrl);
System.out.println(descripcion);
}
catch (Exception e)
{
// TODO: handle exception
}
试试看
{
JSONObject JSONObject=新JSONObject(结果);
//Buscamos el objeto查询“objeto”
JSONArray queryJSONOBject=jsonObject.getJSONArray(“生产公司”);
//最终结果
String description=“;//=新字符串[queryJSONOBject.length()];
对于(int i=0;i
您的产品公司数据来自json数组,您将产品公司数据视为json对象。请尝试以下代码:-
try
{
JSONObject jsonObject = new JSONObject(result);
// Buscamos el objeto query "Objeto"
JSONArray queryJSONOBject = jsonObject.getJSONArray("production_companies");
// Finalmente obtenemos los strings
String descripcion = "" ;//= new String[queryJSONOBject.length()];
for (int i = 0; i < queryJSONOBject.length(); i++)
{
JSONObject j = queryJSONOBject.getJSONObject(i);
descripcion = descripcion + j.getString("name")+ " / ";
}
String titulo = jsonObject.getString("original_title");
String imageUrl = jsonObject.getString("poster_path");
System.out.println(titulo);
System.out.println(imageUrl);
System.out.println(descripcion);
}
catch (Exception e)
{
// TODO: handle exception
}
试试看
{
JSONObject JSONObject=新JSONObject(结果);
//Buscamos el objeto查询“objeto”
JSONArray queryJSONOBject=jsonObject.getJSONArray(“生产公司”);
//最终结果
String description=“;//=新字符串[queryJSONOBject.length()];
对于(int i=0;i
您的产品公司数据来自json数组,您将产品公司数据视为json对象。请尝试以下代码:-
try
{
JSONObject jsonObject = new JSONObject(result);
// Buscamos el objeto query "Objeto"
JSONArray queryJSONOBject = jsonObject.getJSONArray("production_companies");
// Finalmente obtenemos los strings
String descripcion = "" ;//= new String[queryJSONOBject.length()];
for (int i = 0; i < queryJSONOBject.length(); i++)
{
JSONObject j = queryJSONOBject.getJSONObject(i);
descripcion = descripcion + j.getString("name")+ " / ";
}
String titulo = jsonObject.getString("original_title");
String imageUrl = jsonObject.getString("poster_path");
System.out.println(titulo);
System.out.println(imageUrl);
System.out.println(descripcion);
}
catch (Exception e)
{
// TODO: handle exception
}
试试看
{
JSONObject JSONObject=新JSONObject(结果);
//Buscamos el objeto查询“objeto”
JSONArray queryJSONOBject=jsonObject.getJSONArray(“生产公司”);
//最终结果
String description=“;//=新字符串[queryJSONOBject.length()];
对于(int i=0;i
问题是,您的产品公司数据来自json数组,您将产品公司数据视为json对象。一旦收到inputstream,然后将其转换为字符串。转换字符串后,请检查是否存在任何jason标记为字符串。如果存在,则解析json数据。收到inputstream后,将其转换为字符串。转换字符串后,请检查是否存在任何jason标记为字符串。如果存在,则解析json数据。收到inputstream后,将其转换为字符串。转换字符串后,请检查是否存在任何jason标记为字符串。如果存在,则解析json数据。收到inputstream后,将其转换为字符串。转换字符串后,请检查是否存在任何jason标记为字符串。如果存在,则解析json数据。json解析器找不到密钥“production\u Companys”的有效对象,您确定它存在吗