【问题标题】:Java JsonObject array value to keyJava JsonObject 数组值到键
【发布时间】:2016-05-31 01:36:55
【问题描述】:

我是java新手,所以这有点混乱

我要获取json格式的字符串

我想要的结果是

{ "user": [ "name", "lamis" ] }

我目前正在做的是:

JSONObject json = new JSONObject();         
json.put("name", "Lamis");
System.out.println(json.toString());

我得到了这个结果

{"name":"Lamis"}

我试过了,但没用 json.put("user", json.put("name", "Lamis"));

【问题讨论】:

  • 您的代码中没有提到user,那么您为什么期望它出现在输出中?
  • 我知道,我不知道如何正确放置它.. 但它给出了奇怪的结果

标签: java json


【解决方案1】:

试试这个:

JSONObject json = new JSONObject();         
json.put("user", new JSONArray(new Object[] { "name", "Lamis"} ));
System.out.println(json.toString());

但是您显示的“错误”结果将是“有一个用户的 name“lamis”比“正确”结果更自然的映射。

为什么你认为“正确”的结果更好?

【讨论】:

  • 嗯,我也想加上“年龄”……我是不是搞砸了?
  • {"name":"Lamis", "age":23} 有什么问题?这就是 JSON 对象 应该 的样子,因此您使用原始代码走在正确的道路上。
  • 谢谢,这正是我想要的
  • 是的,我现在意识到了这一点,但知道该怎么做仍然很好,因为我花了一些时间
【解决方案2】:

另一种方法是使用 JSONArray 来呈现列表

   JSONArray arr = new JSONArray();
   arr.put("name");
   arr.put("lamis");

   JSONObject json = new JSONObject();
   json.put("user", arr);

   System.out.println(json);   //{ "user": [ "name", "lamis" ] }

【讨论】:

    【解决方案3】:

    可能你所追求的与你认为你需要的不同;

    您应该有一个单独的“用户”对象来保存所有属性,例如姓名、年龄等。 然后那个对象应该有一个方法给你对象的 Json 表示......

    您可以查看下面的代码;

    import org.codehaus.jettison.json.JSONException;
    import org.codehaus.jettison.json.JSONObject;
    
    public class User {
        String  name;
        Integer age;
    
        public User(String name, Integer age) {
            this.name = name;
            this.age = age;
        }
    
        public JSONObject toJson() {
            try {
                JSONObject json = new JSONObject();
                json.put("name", name);
                json.put("age", age);
                return json;
            } catch (JSONException e) {
                e.printStackTrace();
                return null;
            }
        }
    
        public static void main(String[] args) {
            User lamis = new User("lamis", 23);
            System.out.println(lamis.toJson());
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多