3

私は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"));

4

3 に答える 3

13

これを試して:

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

ただし、あなたが示した「間違った」結果は、「正しい」結果よりも「「ラミス」という名前のユーザーがいるというより自然なマッピングになります。

なぜ「正しい」結果の方が良いと思いますか?

于 2012-05-22T14:34:26.050 に答える
8

それを行う別の方法は、リストを表示するために 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" ] }
于 2012-05-22T14:56:19.000 に答える
1

おそらく、あなたが求めているものは、あなたが必要だと思っているものとは異なります。

名前、年齢などのすべてのプロパティを保持するために、別の「ユーザー」オブジェクトが必要です。次に、そのオブジェクトには、オブジェクトの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());
    }
}
于 2012-05-22T14:43:27.343 に答える