将数组列表转换为json对象字符串

时间:2013-06-28 07:51:04

标签: java javascript jquery playframework

我有一个模型类方法,它返回包含所有注册用户详细信息的对象列表。我想获取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();
    }
}

4 个答案:

答案 0 :(得分:19)

要将ArrayList转换为Json,只需从以下位置下载Open Source json实用程序: 来自http://json.org/java/

here或Jar文件

只是这样做:

JSONArray jsonAraay = new JSONArray(your_array_list);

就是这样

注意:你的POJO / MODEL类中应该有setter / getter来将arraylist转换为json

答案 1 :(得分:1)

不要打扰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);

答案 2 :(得分:0)

您可以像其他人建议的那样使用各种第三方库,或者只使用Play自己的简化方法(可在play.libs.Json中找到)与Jackson对象一起使用,但它已集成到框架中需要使用的代码少得多,例如:

JsonNode myJsonNode = Json.toJson(MyListObject);将List转换为JsonNode对象,然后使用String jsonResult = Json.stringify(myJsonNode);之类的东西将其转换为字符串表示形式。

如果您在模板中使用JSON,请不要忘记将其包装在@Html(myJsonString)之类的内容中,这样它就不会逃避任何事情。否则,如果您只是将纯JSON输出到浏览器,则简单的return ok(jsonResult);将起作用,因为Play将自动设置内容类型。

参考链接:http://www.playframework.com/documentation/api/2.0/java/play/libs/Json.html

答案 3 :(得分:0)

你看过这个: http://www.json.org/javadoc/org/json/JSONObject.html#valueToString(java.lang.Object)

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

工作得很好......如果你感兴趣的话,那个lib上还有其他一些方法......