Java 使用不同结构处理JSON文件
我有一个android应用程序Java,可以处理来自te web的API 当前应用程序正在处理一个JSON文件,如下所示:Java 使用不同结构处理JSON文件,java,android,json,Java,Android,Json,我有一个android应用程序Java,可以处理来自te web的API 当前应用程序正在处理一个JSON文件,如下所示: { "contacts": [ { "id": 1, "name": "name1", "email": "email1", "phone": "1234567890" }, { "id": 2, ETC... "contacts": [
{
"contacts": [
{
"id": 1,
"name": "name1",
"email": "email1",
"phone": "1234567890"
},
{
"id": 2,
ETC...
"contacts": [
{...},
{...},
{...}
]
"contacts": {
"1": {...},
"2": {...},
"3": {...}
}
我需要处理另一个JSON文件,但它的结构不同:
{
"contacts": {
"1": {
"id": 1,
"name": "name1",
"email": "email1",
"phone": "1234567890",
"level1": {
"level2": {
"level3": 3,
}
},
"last_updated": 20180712
},
"2": {
ETC...
如何通过调整下面的代码来处理第二个JSON文件
if (jsonSource != null) {
try {
JSONObject jsonObject = new JSONObject(jsonSource);
JSONArray jsonArrayData = jsonObject.getJSONArray("contacts");
for (int i = 0; i < jsonArrayData.length(); i++) {
JSONObject contacts = jsonArrayData.getJSONObject(i);
String id = contacts.getString("id");
String name = contacts.getString("name");
String email = contacts.getString("email");
String phone = contacts.getString("phone");
HashMap<String, String> values = new HashMap<>();
values.put("id", id);
values.put("name", name);
values.put("email, email);
values.put("phone, phone);
contactList.add(values);
}
} catch (final JSONException e) {
Log.e(TAG, "JSON parsing error: " + e.getMessage());
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getContext(), "ERROR", Toast.LENGTH_LONG).show();
}
});
}
} else {
Log.e(TAG, "Unable to retrieve JSON file from URL");
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getContext(), "ERROR", Toast.LENGTH_LONG).show();
}
});
}
return null;
非常感谢您的帮助 看起来,在第一个json中,联系人是对象数组,在第二个json中,联系人是对象数组。其中有其他对象,简化版本如下所示:
{
"contacts": [
{
"id": 1,
"name": "name1",
"email": "email1",
"phone": "1234567890"
},
{
"id": 2,
ETC...
"contacts": [
{...},
{...},
{...}
]
"contacts": {
"1": {...},
"2": {...},
"3": {...}
}
所以,您唯一的选择是手动检查联系人数组或对象,并根据它更改代码。
它看起来是这样的:
{
"contacts": [
{
"id": 1,
"name": "name1",
"email": "email1",
"phone": "1234567890"
},
{
"id": 2,
ETC...
"contacts": [
{...},
{...},
{...}
]
"contacts": {
"1": {...},
"2": {...},
"3": {...}
}
JSONObject JSONObject=新的JSONObject JSONSource;
如果jsonObject.getcontacts是jsonObject的实例{
JSONObject contactsJson=JSONObject.GetJSONObject Contacts;
对于迭代器,it=contactsJson.keys;it.hasNext{
String key=it.next;
JSONObject contactJson=contactsJson.getJSONObject键;
//处理联系人项目的代码
}
}否则{
//处理每个联系人项目的代码
}