gpt4 book ai didi

java - 从Json数组中获取指定值

转载 作者:行者123 更新时间:2023-11-29 07:39:14 25 4
gpt4 key购买 nike

你怎么样

我需要访问数据库并从表中读取数据,然后获取它的值,因此我创建一个 php 文件以 JSON 格式打印数据库以访问数据:

<?php
try{
$db=new PDO('mysql:host=localhost;dbname='database','table','password');
$row=$db->prepare('select * from users' );
$row->execute();
$json_data=array();
foreach($row as $rec)
{
$json_array['userId']=$rec['userId'];
$json_array['user']=$rec['user'];
$json_array['pass']=$rec['pass'];
$json_array['name']=$rec['name'];
$json_array['family']=$rec['family'];
$json_array['gender']=$rec['gender'];
$json_array['birthday']=$rec['birthday'];

array_push($json_data,$json_array);
}
echo json_encode($json_data);
} catch(PDOExcetion $e)
{
print "Error: " . $e->getMessage()."<br/>";
die();
}
?>

这是输出:

[
{"userId":"1","user":"saly","pass":"666","name":"SalyR","family":"manson","gender":"male","birthday":"1988\/11\/10"},
{"userId":"1","user":"foo","pass":"2657","name":"foo","family":"rocki","gender":"male","birthday":"13989\/2\/07"},
{"userId":"1","user":"mil","pass":"63495","name":"milo","family":"toufa","gender":"male","birthday":"13987\/04\/21"},
{"userId":"1","user":"soos","pass":"03468","name":"soro","family":"radi","gender":"female","birthday":"13990\/08\/09"}
]

我想访问指定的值,例如“userId”、“name”和“birthday”。

我使用三种方法来获取值:

1) getJSONFromDatabase 方法获取数据库 URL 并返回 JSON 字符串。

public String getJSONFromDatabase(String getDatabaseURL) {
HttpClient client = new DefaultHttpClient();
HttpPost method = new HttpPost(getDatabaseURL);
String result = "";

try {
HttpResponse response = client.execute(method);
int code = response.getStatusLine().getStatusCode();
InputStream stream = response.getEntity().getContent();
result = inputstreamToString(stream);
Log.i("LOG", "Code :" + code);
} catch (IOException e) {
Log.e("Database", "Error Connect to Database!");
e.printStackTrace();
}
return result;
}

2) inputstreamToString 方法获取输入流并读取所有行。

private String inputstreamToString(InputStream getStream) {
BufferedReader reader = new BufferedReader(new InputStreamReader(getStream));
StringBuilder builder = new StringBuilder();
String line;

try {
while ((line = reader.readLine()) != null) {
builder.append(line);
}
return builder.toString();
} catch (IOException e) {
Log.e("Reader", "Error reading stream!");
e.printStackTrace();
}
return "";
}

3) jsonToString 方法获取带有我们想要获取的字符串值的 JSON 字符串。

public String jsonToString(String getJSONString, String value) {
String userId = "";
try {
JSONObject object = new JSONObject(getJSONString);
userId = object.getString(value);
return userId;

} catch (JSONException e) {
Log.e("JSON", "Error converting!");
e.printStackTrace();
}
return "";
}

所以我调用这样的方法:

String databaseURL = "http://192.168.56.1/saly/getDatabaseTable.php";
String jsonFormat = getJSONFromDatabase(databaseURL);
String userId = jsonToString(jsonFormat, "userId");
String name= jsonToString(jsonFormat, "name");
String birthday= jsonToString(jsonFormat, "birthday");

最后我在日志中收到以下错误:

JSON: Error converting!  

JSON: Error converting!

JSON: Error converting!

当我删除 [ ] 并像这个 JSON 字符串一样写入一行时,它可以正常工作,只需一行!:

{
"userId":"1",
"user":"saly",
"pass":"666",
"name":"SalyR",
"family":"manson",
"gender":"male",
"birthday":"1988\/11\/10"
}

但这对我不起作用,因为当我以 JSON 格式打印数据库的所有表时,整个数据都会打印。

我写了太多,对此感到抱歉,我尝试解释每件事。你能帮我解决我错的地方吗?

谢谢。

最佳答案

您必须将其解析为 jsonArray。以下 fragment 将对您有所帮助。

JSONArray jsonarray = new JSONArray(str);//str= your json string.


for(int i=0; i<jsonarray.length(); i++){
JSONObject obj = jsonarray.getJSONObject(i);

String name = obj.getString("name");
String url = obj.getString("url");

System.out.println(name);
System.out.println(url);
}

Here这是这个问题的答案。

关于java - 从Json数组中获取指定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29576266/

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