从 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 的对象所在的位置,然后从该对象获取 fname
和 lname
值。
由于听起来您可能需要随时跟踪此信息,因此您可以创建一个 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;
}
}
我是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 的对象所在的位置,然后从该对象获取 fname
和 lname
值。
由于听起来您可能需要随时跟踪此信息,因此您可以创建一个 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;
}
}