gpt4 book ai didi

java - Android 中 java.lang.String 类型的值无法转换为 JSONArray(转发)

转载 作者:太空宇宙 更新时间:2023-11-04 15:08:20 24 4
gpt4 key购买 nike

我重新发布此内容是因为我找不到该问题的解决方案...

这里有错误

org.json.JSONException:Value <!DOCTYPE of type java.lang.String cannot be converted to JSONArray

这是 JSON 输出:

[{"name":"Muhaimin","address":"Sylhet","bgroup":"o+"}]

这里是类代码:

entpackage com.example.blood;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONObject;

import android.os.Bundle;
import android.os.StrictMode;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.widget.TextView;
import android.widget.Toast;

@SuppressLint("NewApi")
public class MainActivity extends Activity {

TextView resultView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
StrictMode.enableDefaults();
resultView=(TextView) findViewById(R.id.result);
getData();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

public void getData()
{
String result="";
InputStream isr=null;
try{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost=new HttpPost("http://10.0.2.2/blood/index.php");
httppost.setHeader("Content-Type", "application/json");
httppost.setHeader("Accept", "JSON");
HttpResponse response=httpclient.execute(httppost);
HttpEntity entity=response.getEntity();
isr=entity.getContent();
}catch(Exception e){
String err=e.toString();
resultView.setText("Could not connect to database"+err);
Log.e("error", err);
}

try{
BufferedReader reader=new BufferedReader(new InputStreamReader(isr,"iso-8859-1"),8);
StringBuilder sb=new StringBuilder();
String line=null;
while((line = reader.readLine()) != null){
sb.append(line + "\n");
}
isr.close();

result=sb.toString();
}catch(Exception e){
String err2=e.toString();
resultView.setText("Error coverting result"+err2);
Log.e("error", err2);
}
try{
String s="";
JSONArray jArray=new JSONArray(result);

for(int i=0;i<jArray.length();i++){
JSONObject json=jArray.getJSONObject(i);
s= s +
"Name :"+json.getString("name")+"\n"+
"Blood Group :"+json.getString("bgroup")+"\n" +
"Address :"+json.getString("address")+"\n\n";
}
resultView.setText(s);
}catch(Exception e){
String err1=e.toString();
resultView.setText("xxx"+err1);
Log.e("error", err1);
}
}

}

这是 php 代码:

  <?php
$con=mysql_connect("localhost","root","","BloodDB");
mysql_select_db("BloodDB",$con);

$result=mysql_query("SELECT name,address,bgroup FROM tbl_blood_donor");

while($row=mysql_fetch_assoc($result))
{
$output[]=$row;
}
print(json_encode($output));
mysql_close($con);
?>

现在如何解决这个问题。我在本地主机工作。提前致谢

最佳答案

您的问题不在 JSON 中,也不在 JSONArray 中,因此如果您遇到此异常,则意味着 JSONArray 的字符串不符合您的预期。打印该行“JSONArray jArray=new JSONArray(result);”之前的字符串结果和字符串长度。您可以使用下面的打印消息Log.d("我的字符串", "字符串结果:["+ result + "] 其长度为:"+ result.length());

请注意,我使用了下面的代码,它工作正常

String str = "[{\"name\":\"Muhaimin\",\"address\":\"Sylhet\",\"bgroup\":\"o+\"}]";
try {
JSONArray json = new JSONArray(str);
Log.d(TAG, "Json value :" + json);
Log.d(TAG, "Json value :" + json.getJSONObject(0).getString("bgroup"));
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

结果:Json值:[{"bgroup":"o+","address":"Sylhet","name":"Muhaimin"}]

Json 值:o+

关于java - Android 中 java.lang.String 类型的值无法转换为 JSONArray(转发),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21674326/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com