早上好。
我正在尝试将JSON data
解析成字符串,但我认为我做错了什么:这是部分。
private void read_JSON()
{
String JSON;
JSONObject jso3 = new JSONObject(JSON);
for (int i=0; i < jso3.length(); i++)
{
try
{
String name = jso3.getString("Nombre");
String surname = jso3.getString("Apellidos");
String date = jso3.getString("Año_nacimiento");
String child_names = jso3.getString("Nombres_Hijos");
}catch (JSONException e)
{
e.printStackTrace();
}
}
jso3.toString(JSON);
}
我在MainActivity.java中创建了 ,它不在单独的文件中。
以下是JSON创建的代码:
private void create_JSON()
{
JSONObject jso = new JSONObject();
try {
jso.put("Nombre","Miguel");
jso.put("Apellidos", "Garcia");
jso.put("Año_nacimiento", 1990);
JSONArray jsa = new JSONArray();
jsa.put("Blur");
jsa.put("Clur");
jso.put("Nombres_Hijos", jsa);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
jso.toString();
我毫不怀疑JSON
是否已正确创建,我只需要帮助理解如何解析它并将其转换为字符串。
如果你能指出我编程中的缺陷,我将非常感激。
莫罗。
答案 0 :(得分:2)
试试这个..
您的回复如下
{ ==> JSONObject
"Año_nacimiento": 1990, ==> String from JSONObject
"Nombres_Hijos": [ ==> JSONArray
"Blur", ==> Directly from JSONArray
"Clur"
],
"Apellidos": "Garcia",
"Nombre": "Miguel"
}
要解析 JSON
使用以下代码:
JSONObject jso3 = new JSONObject(output);
String name = jso3.getString("Nombre");
String surname = jso3.getString("Apellidos");
int date = jso3.getInt("Año_nacimiento");
JSONArray menuObject = jso3.getJSONArray("Nombres_Hijos");
for(int i=0;i<menuObject.length;i++){
System.out.println(menuObject.getString(i));
}
答案 1 :(得分:2)
在解析JSON时使用以下选项以避免常见错误。
JSONObject jso3 = new JSONObject(output);
String name = jso3.optString("Nombre",""); // here default value is blank ("")
String surname = jso3.optString("Apellidos",null);// here default value is null
int date = jso3.getInt("Año_nacimiento",0); // here default value is ZERO (0)
JSONArray menuObject = jso3.getJSONArray("Nombres_Hijos");
for(int i=0;i<menuObject.length;i++){
System.out.println(menuObject.getString(i));
}
使用 opt 选项可以设置默认返回值。如果该标记在JSON数据中不可用,您将获得默认值。
这对我来说比GSON lib更好。
答案 2 :(得分:1)
try{
String JSON ;
JSONObject jso3 = new JSONObject(JSON);
JSONArray menuObject = new JSONArray(jObject.getString("array_inside_json"));
for(int i=0;i<menuObject.length;i++){
name=jObject.getString("inside"));
}
}catch(Exception e){
}
请参阅此link了解详情
答案 3 :(得分:1)
试试这个。
String apellidos = jso.getString("Apellidos");
System.out.println(apellidos);
int str2 = jso.getInt("Año_nacimiento");
System.out.println(str2);
String nombre = jso.getString("Nombre");
System.out.println(nombre);
JSONArray array = jso.getJSONArray("Nombres_Hijos");
for(int i = 0; i < array.length(); i++){
System.out.println(array.get(i));
}
答案 4 :(得分:1)
首先,你似乎忽略了在read_JSON中创建的字符串,但我假设你这样做是为了避免在这里粘贴过多的代码。
问题在于这一行:
String child_names = jso3.getString("Nombres_Hijos");
因为字段Nombres_Hijos是JsonArray,而不是String。要阅读它,请使用:
JSONArray jsa = jso3.getJSONArray("Nombres_Hijos");
现在,所有人都对这些数据需要做的事情进行了解决。 最简单的案例是:
String names = jsa.toString(); //["Blur","Clur"]
答案 5 :(得分:1)
private void read_JSON(String json)
{
JSONObject jObject= new JSONObject(json);
JSONArray jso3= new JSONArray(jObject.getString("Nombres_Hijos"));
for (int i=0; i < jso3.length(); i++)
{
try
{
String name = jso3.getString("Nombre");
String surname = jso3.getString("Apellidos");
String date = jso3.getString("Año_nacimiento");
String child_names = jso3.getString("Nombres_Hijos");
}catch (JSONException e)
{
e.printStackTrace();
}
}
jso3.toString(JSON);
}