登録されたすべてのユーザーの詳細を含むオブジェクトのリストを返すモデルクラスメソッドがあります。 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();
}
}
ArrayListをJsonに変換するには、次からOpen Source jsonユーティリティをダウンロードします。 http://json.org/Java/ または here からJarファイル
そして、ただやる:
JSONArray jsonAraay = new JSONArray(your_array_list);
それでおしまい
注:arraylistをjsonに変換するには、POJO/MODELクラスにセッター/ゲッターが必要です。
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);
ここで他の人が示唆しているようなあらゆる種類のサードパーティライブラリを使用するか、ジャクソンオブジェクトで動作する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
これを見ましたか? http://www.json.org/javadoc/org/json/JSONObject.html#valueToString(Java.lang.Object)
JSONObject.valueToString(<<your list of custom object>> OR <<objects>> OR <<map>>)
うまく動作します...興味があるなら、そのライブラリには他のメソッドがいくつかあります...