java - 我无法使用 Play 框架 2.1 提供 JSON 响应

标签 java json playframework-2.1

我正在尝试将 json 导出到 Android 设备。我已经使用Java(例如Play)完成了它!文档: http://www.playframework.com/documentation/2.1.1/JavaJsonRequests 但它不起作用。我确信这不是 Android 问题,因为我对 php return json_encode($some) 做了同样的事情,而且效果很好。我能做什么?

package controllers;

import java.util.List;

import org.codehaus.jackson.node.ArrayNode;
import org.codehaus.jackson.node.ObjectNode;

import models.Restaurante;
import play.libs.Json;
import play.mvc.*;

public class Servicio extends Controller {  

public static Result coordenadas() {

    //System.out.println("XXXxxXX");

    ObjectNode rpta = Json.newObject();
    ArrayNode restaurantes = rpta.arrayNode();

    List <Restaurante> rests = Restaurante.allRests();
    Restaurante rest;

    for(int i=0; i<rests.size(); i++) {
        rest = rests.get(i);
        ObjectNode restJs = Json.newObject();
        restJs.put("nombre", rest.nombre);
        restJs.put("lon", rest.longitud);
        restJs.put("lat", rest.latitud);
        restaurantes.add(restJs);
    }

    ObjectNode response = Json.newObject();
    response.put("restaurantes", restaurantes);

    return ok(response);
}

}

我从数据库获取它,浏览器向我显示了这个:

{
   "restaurantes":[
      {
         "nombre":"ODONTOLOGIA",
         "lon":-12.054695,
         "lat":-77.085268
      },
      {
         "nombre":"LETRAS",
         "lon":-12.057444,
         "lat":-77.081856
      },
      {
         "nombre":"FISICA",
         "lon":-12.060279,
         "lat":-77.081594
      },
      {
         "nombre":"COMEDOR",
         "lon":-12.059332,
         "lat":-77.083104
      },
      {
         "nombre":"QUIMICA",
         "lon":-12.06009,
         "lat":-77.083804
      },
      {
         "nombre":"CIBERCAFE",
         "lon":-12.059857,
         "lat":-77.084563
      },
      {
         "nombre":"GEOGRAFICA",
         "lon":-12.05507,
         "lat":-77.086127
      },
      {
         "nombre":"MECANICA",
         "lon":-12.055854,
         "lat":-77.081816
      },
      {
         "nombre":"ELECTRONICA",
         "lon":-12.056347,
         "lat":-77.082055
      },
      {
         "nombre":"ECONOMIA",
         "lon":-12.058123,
         "lat":-77.080639
      },
      {
         "nombre":"MINAS",
         "lon":-12.05199,
         "lat":-77.087165
      },
      {
         "nombre":"ADMINISTRACION",
         "lon":-12.05789,
         "lat":-77.081602
      },
      {
         "nombre":"Nuevo restaurante",
         "lon":-70.23123,
         "lat":-12.31234
      }
   ]
}

最佳答案

尝试仅返回餐馆作为 ok 属性:

return ok(restaurantes);

关于java - 我无法使用 Play 框架 2.1 提供 JSON 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17227664/

相关文章:

python - 检查字典键名称,它是类的实例

scala:将一个对象包装在另一个对象中的更简单方法

mysql - 如何使用 Play 2.x 对 MySQL 数据库进行单元测试?

scala - 操作后重定向到上一页的模式

java - Json 和 Array 序列化 - Java Spring Boot

java - 简单的 html 表单 .. 未执行操作字段

java - 根据两个属性折叠对象的 ArrayList 以生成唯一的集合

java - super() 前后代码的区别

javascript - Gruntfile.js 任务错误

java - 如何使用 JSONObject 以及 java 中数据库表中的所有值创建 JSONArray