从Java中的另一个值获取JSON元素值
我是Json新手,需要从另一个值中获取一个元素的值。考虑我已经用代码创建了JSON数组:从Java中的另一个值获取JSON元素值,java,arrays,json,jsonobject,Java,Arrays,Json,Jsonobject,我是Json新手,需要从另一个值中获取一个元素的值。考虑我已经用代码创建了JSON数组: JSONObject jsonObject = new JSONObject(); JSONArray array = new JSONArray(); for(int i=0;i<3;i++){ JSONObject obj = new JSONObject(); obj.put("email", "E"+i); obj.put("fname", "F"+i); ob
JSONObject jsonObject = new JSONObject();
JSONArray array = new JSONArray();
for(int i=0;i<3;i++){
JSONObject obj = new JSONObject();
obj.put("email", "E"+i);
obj.put("fname", "F"+i);
obj.put("lname", "L"+i);
array.put(obj);
}
jsonObject.put("MyArray" , array);
我需要找到fname和lname的值,它们的电子邮件是“
E2
”如何在Java中实现这一点?在您的代码之后添加此项并更改if语句以反映您希望对对象执行的操作:
JSONArray t = jsonObject.getJSONArray("MyArray");
for (int i = 0; i < t.length(); i++) {
JSONObject temp = (JSONObject) t.get(i);
if(temp.get("email").equals("E2")) {
//do whatever with the object
System.out.println(temp.get("fname"));
System.out.println(temp.get("lname"));
break;
}
}
JSONArray t=jsonObject.getJSONArray(“MyArray”);
对于(int i=0;i
此代码首先查找带有
email
E2的对象的位置,然后从该对象获取fname
和lname
值。因为听起来您可能需要随时跟踪此信息,您可以创建一个Person类,然后查看驱动程序类,该类接受您想要的JSON数组和用户名,然后返回与该用户名匹配的Person
驾驶舱
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
/**
* Created by fbgrecojr on 12/5/15.
*/
public class Driver {
public static Person getKeyFromValue(String json, String username){
Person toReturn = new Person();
try{
JSONArray arr = new JSONArray(json);
for(int i=0; i<arr.length(); ++i){
JSONObject obj = arr.getJSONObject(i);
if(obj.getString("username").equals(username)){
toReturn.set_username(obj.getString("username"));
toReturn.set_email(obj.getString("email"));
toReturn.set_first(obj.getString("first"));
toReturn.set_last(obj.getString("last"));
break;
}
}
}catch (JSONException e){
//do something
}
return toReturn;
}
}
您可以使用
JsonPath
库,该库的语法可以通过正则表达式在JSON树中导航。电子邮件E2是什么?@Valijon:我将尝试一下,似乎很有趣。@Abdelhak:这是在运行时动态出现的。正是我需要的。非常感谢。不需要感谢,只需接受答案,这样其他有相同问题的人就可以轻松找到答案。谢谢@Frank,我想保持简单,因为我的android项目足够大,我需要它。
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
/**
* Created by fbgrecojr on 12/5/15.
*/
public class Driver {
public static Person getKeyFromValue(String json, String username){
Person toReturn = new Person();
try{
JSONArray arr = new JSONArray(json);
for(int i=0; i<arr.length(); ++i){
JSONObject obj = arr.getJSONObject(i);
if(obj.getString("username").equals(username)){
toReturn.set_username(obj.getString("username"));
toReturn.set_email(obj.getString("email"));
toReturn.set_first(obj.getString("first"));
toReturn.set_last(obj.getString("last"));
break;
}
}
}catch (JSONException e){
//do something
}
return toReturn;
}
}
/**
* Created by fbgrecojr on 12/5/15.
*/
public class Person {
private String _username, _first, _last, _email;
public Person(){
}
public String get_email() {
return _email;
}
public void set_email(String _email) {
this._email = _email;
}
public String get_first() {
return _first;
}
public void set_first(String _first) {
this._first = _first;
}
public String get_last() {
return _last;
}
public void set_last(String _last) {
this._last = _last;
}
public String get_username() {
return _username;
}
public void set_username(String _username) {
this._username = _username;
}
}