我无法通过json数组进行解析。当我试图得到一个“不是原始数组错误。你能帮我找到我的错误吗?”?
我一直在寻找解决办法,但没有找到。
这是我的代码:
public void tableInit() throws JSONException {
Log.e("TableInit()", "Start!");
Log.e("TableInit()", ""+jsonObjectToTable);
float textSize = 18.0f;
TableLayout stk = (TableLayout) findViewById(R.id.table_main);
TableRow tbrow0 = new TableRow(this);
TextView tv0 = new TextView(this);
tv0.setText(" ID ");
tv0.setTypeface(null, Typeface.BOLD); //fett
tv0.setTextSize(textSize);
tbrow0.addView(tv0);
[...]
stk.addView(tbrow0);
JSONArray jsonArray = new JSONArray(jsonObjectToTable);
for(int i = 0; i < jsonArray.length(); ++i)
{
// Extract values from JSON row:
JSONObject jsonObject = jsonArray.getJSONObject(i);
Log.e("JsonObject", ""+jsonObject);
String id = jsonObject.has("id") ? jsonObject.getString("id") : "";
String name = jsonObject.has("name") ? jsonObject.getString("name") : "";
String home = jsonObject.has("home") ? jsonObject.getString("home") : "";
String wetsuit = html" target="_blank">jsonObject.has("wetsuit") ? jsonObject.getString("wetsuit") : "";
String board = jsonObject.has("board") ? jsonObject.getString("board") : "";
String rig = jsonObject.has("rig") ? jsonObject.getString("rig") : "";
String harness = jsonObject.has("harness") ? jsonObject.getString("harness") : "";
String rent_until = jsonObject.has("rent_until") ? jsonObject.getString("rent_until") : "";
String renting_date = jsonObject.has("renting_date") ? jsonObject.getString("renting_date") : "";
TableRow tbrow = new TableRow(this);
TextView textViewId = new TextView(this);
textViewId.setText(id);
textViewId.setGravity(Gravity.CENTER);
tbrow.addView(textViewId);
[...]
}
}
下面是创建的 json 对象表:
@Override
protected String doInBackground(String... strings) {
Log.e("Async", "Async starts!");
try {
response = RequestHandler.sendGet("http://192.168.122.1/php/renting_private_select.php");
return response;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
protected void onPostExecute(String s) {
try {
JSONObject tableJson = new JSONObject(s);
jsonObjectToTable = tableJson;
tableInit();
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}
我得到以下日志:
E/TableInit():开始!E/TableInit():{"equipment_private":[{"id":"1","name":"Name","home":"Unterkunft","潜水服":"Anzug","board":"Board","rig":"Segel","harness":"Trapetz","renting_date":"23.01.19","rent_until":"23.12.19"},{"id":"2","name":"Name","home":"Unterkunft","潜水服":"Anzug","board":"Board","rig":"Segel","harness":"Trapetz2","renting_date":","rent_until":""}]} W/InternalHandler.handleMessage:AsyncTask.java:712:不是原始数组: classorg.json.JSONObjectW/System.err: atorg.json.JSONArray.(JSONArray.java:116)atcom.example.surftest.MainActivity.tableInit(MainActivity.java:135)W/System.err: atcom.example.surftest.MainActivity$RequestSelectAsync.onPostExecute(MainActivity.java:234)atcom.example.surftest.MainActivity$RequestSelectAsync.onPostExecute)atandroid.os.AsyncTask.finish(AsyncTask.java:695)atandroid.os.AsyncTask.access600$(AsyncTask.java:180)atandroid.os.AsyncTask$System.err(org.json.JSONExceptionandroid.os.Handler.dispatchMessage(Handler.java:106)在android.os.Looper.loop(Looper.java:193)在android.app.ActivityThread.main(ActivityThread.java:6669)在java.lang.reflect.Method.invoke(本机方法)W/System.err:在com. android. interals. os. ZygoteInit. main(ZygoteInit. java: 858)com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit. java: 493)
你的整体解析方式不太对。
为此,我建议使用GSON之类的东西。
要使用它,首先创建两个模型类。
class Response{
@SerializedName("equipment_private")
public List<Equipment> equipmentPrivate
}
class Equipment {
public String id;
public String name;
public String home;
public String wetsuit;
public String board;
public String rig;
public String harness;
@SerializedName("renting_date")
public String rentingDate;
@SerializedName("rent_until")
public String rentUntil;
}
之后,你可以做这样的事情
Gson gson = new Gson();
Response response = gson.fromJson(json_string, Response.class);
也许它需要一些额外的工作,因为我没有在IDE中检查它,但我想你会理解的。希望它会有所帮助。
这是因为您获得的表本身就是一个对象。看看这个。您只需多写一行即可完成代码:
这是您的输入
{
"equipment_private": [{
"id": "1",
"name": "Name",
"home": "Unterkunft",
"wetsuit": "Anzug",
"board": "Board",
"rig": "Segel",
"harness": "Trapetz",
"renting_date": "23.01.19",
"rent_until": "23.12.19"
}, {
"id": "2",
"name": "Name",
"home": "Unterkunft",
"wetsuit": "Anzug",
"board": "Board",
"rig": "Segel",
"harness": "Trapetz2",
"renting_date": "",
"rent_until": ""
}]
}
你做错的是,你正在创建json数组的对象并传递json对象本身,而在你的json响应中,json数组被嵌入到与键“equipment_private”相关的json对象中。< br >错误方式:< br > < code > JSON array JSON array = new JSON array(jsonObjectToTable);
正确方法:< br > < code > JSON array JSON array = jsonobjecttotable . getjson array(" equipment _ private ") < br >希望您能理解,这将解决您的问题。
问题内容: 我正在使用Sencha Touch(ExtJS)从服务器获取JSON消息。我收到的消息是这个: 我的问题是我无法解析此JSON对象,因此我可以使用每个计数器对象。 我正在尝试像这样完成: 我究竟做错了什么 ?谢谢! 问题答案: Javascript具有针对字符串的内置JSON解析,我想这就是您拥有的: 在您的示例中使用此代码将是: 编辑 :for循环的使用中有一个错误(我在初读时就错过
我很难找到解析JSONArray的方法。看起来是这样的: 如果JSON的编写方式不同(换句话说,如果返回的是JSON对象而不是对象数组),我知道如何解析它。但这是我所拥有的一切,我必须要去做。 *编辑:这是一个有效的json。我用这个json做了一个iPhone的应用程序,现在我需要为Android做,但无法解决这个问题。外面有很多例子,但它们都是与JSONObject相关的。我需要一些用于JSO
问题内容: 我有这个json数组: 我有这个类来保存数据: 我正在尝试将json转换为MapData对象的列表: 但是我得到这个错误: 我究竟做错了什么? 问题答案: 我怀疑方法调用返回错误的类型。它应该返回而不是。 就像是: 在这个要点中,我有一个很好的例子说明了您的问题
问题内容: 我正在尝试解析如下的JSON 到[[“ Jack”,“ Jones”,“ Rock”,“ Taylor”,“ Rob”],[“ Rose”,“ John”],[“ Ted”]]的数组 这是数组的数组。 我尝试了下面的代码 当我打印“人”时,我得到o / p为 我很困惑当“人物”重复3次时如何解析 尝试在UITableView中显示内容,其中第一个单元格具有“ Jack” ..“ Rob
问题内容: 如何解析JSON ARRAY以获取没有[]和“”的数据 这是json 我的代码: 输出:[“ 23,Damansara-蒲种高速公路(Bandar Puchong Jaya)”,“ 47100 Puchong Batu Dua Belas,雪兰莪,”马来西亚“] 我只想要数据。如: 23,Damansara-Puchong Hwy(Bandar Puchong Jaya),47100
问题内容: 我有类似以下的输出: 我想获取每个城市的名称,该怎么办? 编辑: 上面的方法似乎无效,没有输出任何值。 问题答案: 也会在提取后为您解析JSON,因此从那时起,您将使用简单的Javascript数组(在JSON中标记为数组)。该文档还包含有关如何处理获取的数据的示例。 您可以使用for循环获取数组中的所有值: 检查您的控制台以查看输出(Chrome,Firefox / Firebug