web-dev-qa-db-ja.com

配列リストのJSONオブジェクト文字列への変換

登録されたすべてのユーザーの詳細を含むオブジェクトのリストを返すモデルクラスメソッドがあります。 all()メソッドによって返されたリストを取得し、データをJSONオブジェクトに変換して、文字列のようにビューに渡します。この配列リストをJSONオブジェクトに変換するにはどうすればよいですか?

以下でこれを行うことができませんでした:

ObjectMapper mapper = new ObjectMapper();
JSONObject json = new JSONObject();
JsonNodeFactory jsonnode = JsonNodeFactory.instance;
ObjectNode result = new ObjectNode(jsonnode);
for (int i = 0; i < list.size(); i++) {
    json.put(list.get(i).fname, list.get(i));
    System.out.println(json.get("fname"));
}

@Entity
class Mydata extends Model {

    @Id
    public Long Id;
    public String fname;
    public String lname;
    public String city;
    public String state;
    /****************** READ/select OPERATION *****************/
    public static Finder < Long, Mydata > Finder = new Finder(Long.class, Mydata.class);

    public static List < Mydata > all() {
        return Finder.all();
    }
    public static void createuser(Mydata user) {
        user.save();
    }
}
11
pret

ArrayListをJsonに変換するには、次からOpen Source jsonユーティリティをダウンロードします。 http://json.org/Java/ または here からJarファイル

そして、ただやる:

JSONArray jsonAraay = new JSONArray(your_array_list);

それでおしまい

注:arraylistをjsonに変換するには、POJO/MODELクラスにセッター/ゲッターが必要です。

19
Rakesh Bhalani

Org.jsonを気にせず、Jacksonをすべて使用してください:

// list is a List<MyData>
final ObjectMapper mapper = new ObjectMapper();
final Map<String, MyData> map = new HashMap<>();
for (final MyData data: list)
    map.put(data.fname, data);
final JsonNode json = mapper.valueToTree(map);
1
fge

ここで他の人が示唆しているようなあらゆる種類のサードパーティライブラリを使用するか、ジャクソンオブジェクトで動作するPlayの独自の単純化されたメソッド(_play.libs.Json_にあります)を使用できますが、フレームワークに統合されており、多くを必要とします使用するコードが少ない、例えば:

JsonNode myJsonNode = Json.toJson(MyListObject); ListをJsonNodeオブジェクトに変換し、String jsonResult = Json.stringify(myJsonNode);のようなものを使用して文字列表現に変換します。

テンプレートでJSONを使用している場合は、@Html(myJsonString)のようなものでラップすることを忘れないでください。それ以外の場合、純粋なJSONをブラウザに出力するだけであれば、Playはコンテンツタイプを自動的に設定するため、単純なreturn ok(jsonResult);が機能します。

参照リンク: http://www.playframework.com/documentation/api/2.0/Java/play/libs/Json.html

0
Mike Hawkins

これを見ましたか? http://www.json.org/javadoc/org/json/JSONObject.html#valueToString(Java.lang.Object)

JSONObject.valueToString(<<your list of custom object>> OR <<objects>> OR <<map>>)

うまく動作します...興味があるなら、そのライブラリには他のメソッドがいくつかあります...

0
labheshr