从 Java 中的另一个值获取 JSON 元素值

Get JSON element value from another value in Java

我是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);
    obj.put("lname", "L"+i);
    array.put(obj);
}
jsonObject.put("MyArray" , array);

其形式为

{"MyArray":[{"username":"E1","fname":"F1","lname":"L1"},{"username":"E2","fname":"F2","lname":"L2"},{"username":"E3","fname":"F3","lname":"L3"} ]}

我需要找到电子邮件为“E2”的 fname 和 lname 的值 我如何在 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;
    }
}

此代码首先查找具有 email E2 的对象所在的位置,然后从该对象获取 fnamelname 值。

由于听起来您可能需要随时跟踪此信息,因此您可以创建一个 Person class,然后查看 Driver class,它将您 JSON 数组和您想要的用户名,然后 returns 匹配该用户名的人。

Driver.class

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;
    }
}

Person.class

/**
 * 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;
    }
}