【问题标题】:How to convert List<Object> to JSON on playframework 2.1 Java如何在 play framework 2.1 Java 中将 List<Object> 转换为 JSON
【发布时间】:2013-09-09 06:29:51
【问题描述】:

我有以下问题。 如何将对象列表转换为 JSON?

我试试这个:

List<PLZ> plzs = PLZ.findPlz(plz);      
String json = play.libs.Json.toJson(plzs);

但我收到以下错误消息:不兼容的类型

[Autocomplete] $ compile
[info] Compiling 1 Java source to C:\Entwicklungsumgebung\play-2.1.3\Autocomplete\target\scala-2.10\classes...
[error] C:\Entwicklungsumgebung\play-2.1.3\Autocomplete\app\controllers\Application.java:25: error: incompatible types
[error]                 String json = play.libs.Json.toJson(plzs);
[error]                                                    ^
[error]   required: String
[error]   found:    JsonNode
[error] 1 error
[error] (compile:compile) javac returned nonzero exit code
[error] Total time: 1 s, completed 05.09.2013 13:58:08

我做错了什么?

以及如何将对象列表转换为 JSON?

package models;

import java.util.*;
import javax.persistence.*;

import play.db.ebean.*;
import play.data.format.*;
import play.data.validation.*;

@Entity
public class PLZ extends Model {

  @Id
  public Long id;

  public String plz;

  public String beschreibung1;

  public String beschreibung2;  


  public static Finder<Long,PLZ> find = new Finder(Long.class, PLZ.class);

  public static List<PLZ> findPlz(String plz){
    List<PLZ> plzs = find.where().ilike("plz", plz+"%").findList();
    return plzs;
  }
 }




package controllers;

import play.libs.Json;
import java.util.*;
import play.*;
import play.mvc.*;
import models.*;

import views.html.*;

public class Application extends Controller {  

    @BodyParser.Of(play.mvc.BodyParser.Json.class)
    public static Result findPlz(String plz) {
        List<PLZ> plzs = PLZ.findPlz(plz);

        String json = play.libs.Json.toJson(plzs);  

        return ok(json);
    }
}

【问题讨论】:

    标签: java json list playframework-2.0


    【解决方案1】:
    import net.sf.json.JSONObject;
    ....
    String resultString = "";
    for (QAAsset qaAsset : assetList) {
      JSONObject jsonObject = JSONObject.fromObject(qaAsset);
      resultString += "," + jsonObject.toString();
    }
    renderJSON("[" + resultString.substring(1) + "]");
    

    我使用这种方式将对象列表转换为 JSON。

    【讨论】:

      【解决方案2】:

      对不起,我拒绝错误的返回类型

      而不是

       String json = play.libs.Json.toJson(plzs);
      

      必须

       org.codehaus.jackson.JsonNode json = Json.toJson(plzs);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-08-08
        • 2013-04-01
        • 2019-11-12
        • 1970-01-01
        • 2014-09-09
        • 2019-05-08
        • 2020-09-15
        • 1970-01-01
        相关资源
        最近更新 更多