11

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

4 回答 4

19

要将 ArrayList 转换为 Json,只需从以下网址下载 Open Source json 实用程序:http: //json.org/java/或从此处下载Jar 文件

只需执行以下操作:

JSONArray jsonAraay = new JSONArray(your_array_list);

而已

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

于 2013-06-28T11:14:42.427 回答
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);
于 2013-06-28T08:07:10.037 回答
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

于 2013-06-29T00:32:45.090 回答
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>>)

工作得很好...如果您有兴趣,该库上还有其他一些方法....

于 2015-10-13T18:37:12.460 回答