【发布时间】:2015-10-24 21:09:56
【问题描述】:
我从我的网络服务器返回了以下格式的 JSON:
{"success":false,"errors":{"username":["Invalid username","Username too short"],"password":["Invalid password"]}}
如何在 Java 中解析 JSON 以获取 第一个键 和 该键的第一个值?所以在上述情况下,输出应该是:
username
Invalid username
我当前的代码如下所示:
String json = new String(((TypedByteArray) retrofitError.getResponse().getBody()).getBytes());
try {
JSONObject obj = new JSONObject(json);
String success = obj.getString("success");
JSONObject errors = obj.getJSONObject("errors");
// TODO
} catch (JSONException e) {
e.printStackTrace();
}
【问题讨论】:
-
您是说您不想要
username键和相关值吗?如果 json 以password前面的username返回,你会想要password键和值吗? -
是的,没错。与该键关联的第一个键和第一个值,无论顺序如何。
-
这似乎是一种奇怪的情况,因为对象的属性本质上没有顺序。你说它来自你的网络服务器——你能控制这个 JSON 文件的格式吗?您能否将与
errors关联的值设为数组而不是对象?一旦它是一个数组,您就可以轻松地使用gson 来解析 JSON 并将第 0 个元素拉出数组。 -
顺序无关紧要。我想要的只是对象中的第一个键以及与该键关联的第一个值。
-
不幸的是,javascript 对象键 don't have an order。它们看起来像,因为其中一个是先打印出来的,但实际上就是先打印的那个。所以当你说你想要“对象中的第一个键”时,这是没有意义的。
标签: java android json android-activity retrofit