我有一个php数组,用json_encode($ arr)编码。
我想使用JSONObject在android中解析这个Json。
但是我怎样才能解析它并在text_view上打印名称就像在Rohan(所有名字)上一样打印text_view。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="...">
</manifest>
我可以将它转换成这样的
[["Rohan","example1.com"],["Ashok","example2.com"]]
}
答案 0 :(得分:0)
首先,让我们像这样命名我们的数组:
修改强>
在实际执行编码之前添加指定内容类型的标头是一个好习惯:
header('Content-type: application/json')
json_encode(array('students' => $arr));
这样,你就会得到这个:
{ "students": [{"Rohan":"example1.com"}]}
而不是你现在得到的东西。
要从Android中的JSONObject获取名称,您需要循环访问数组,然后逐个选择。假设您正在以String的形式获取JSON表单PHP,您可以尝试这样的事情:
JSONObject jsonObject = new JSONObject(mJSON);
JSONArray jsonArray = jsonObject.getJSONArray("students");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject current = jsonArray.getJSONObject(i);
if (!current.getString("student_name").isEmpty()) {
mTextView.setText(current.getString("student_name"));
}
}
希望有所帮助。
答案 1 :(得分:0)
您可以尝试使用php以这种方式对json进行编码以满足您的需求:
<?php
$json='{
"students": [
{
"Rohan": "example1.com"
},
{
"Ashok":"example2.com"
}
]
}';
var_dump($json);
$students=array(
"student"=>array(
array("Rohan"=>"example1.com"),
array("Ashok"=>"example2.com")
)
);
var_dump(json_encode($students, JSON_PRETTY_PRINT));
但我觉得这样做有点奇怪,因为你必须创建只包含一个键的数组。我认为herrmartell架构更清晰。 干杯!