Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Java中的另一个值获取JSON元素值_Java_Arrays_Json_Jsonobject - Fatal编程技术网

从Java中的另一个值获取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

我是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);

我需要找到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;
    }
}