2012-05-22 4 views
3

Я новичок в Java, так что это немного сбивает с толкуJava JSONObject значение массива ключ

Я хочу, чтобы получить JSon отформатированную строку

В результате я хочу

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

Я «м в настоящее время делает это:

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

И я получаю этот результат

{"name":"Lamis"} 

Я попытался это, но оно не работает json.put ("пользователь", json.put ("имя", "Ламис"));

+2

Ничто в вашем коде упоминает 'user' так почему вы ожидаете, что на выходе? –

+0

Я знаю, я не знаю, как правильно это сделать .. но это дало странные результаты – Lamis

ответ

11

Попробуйте это:

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

Однако «неправильный» результат вы показали бы более естественное отображение «есть пользователь с именем „Ламис“, чем„результат коррекции“.

Почему вы думаете, «правильный» результат лучше?

+0

Хм, я хочу, чтобы это добавило «возраст» тоже .. Я все испортил? – Lamis

+1

Что не так с '{" name ":" Lamis "," age ": 23}'? Это то, что должен выглядеть JSON-объект *, и для этого вы на правильном пути с вашим исходным кодом. –

+0

Спасибо в любом случае, это точно , что я хотел – Lamis

1

Возможно, что вы после отличается от того, что вы думаете, у ou need;

Вы должны иметь отдельный объект «User», чтобы держать все свойства, такие как имя, возраст и т.д. и т.п. и затем этот объект должен иметь метод дает вам представление 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()); 
    } 
} 
7

Другой способ сделать это состоит в использовании 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" ] } 
Смежные вопросы