播放 Java,如何读取本地 JSON 文件并在正文中显示为列表?
Play Java, How to read a local JSON file and show as list on a body?
我开始学习 Play Java,并发现了许多不同的样本(通常没有导入等)关于如何做主题中解释的内容。
我正在使用 Play 2.5 和 JDK 8,并配置了我自己的控制器。该文件位于我可以从控制器 Java class 访问的目录中,但我不清楚读取 JSON 文件的最佳做法是什么:通过 Jackson?或 java.io.* 函数?
是否有可能从专家那里获得最小的工作样本?
我尝试按照本指南进行操作,但代码总是出错(示例代码既没有最后的逗号!):
https://www.playframework.com/documentation/2.5.x/JavaJsonActions
基本上我的jsonitems.json在..workspace\play-java\app\data\items.json.
JSON 文件是这样的:
[
{
"id": 10000000,
"name": "name1",
"starttime": "2015-06-18T06:26:56-07:00",
"endtime": "2015-07-08T12:47:16-07:00"
}, ETC。
]
我想在读取文件的函数中我需要指定路径 'app/data/items.json' 或 'data/items.json'
提前致谢!
如果要将JSON传递给客户端,可以使用Json
class将输入流(或字符串)转换为JsonNode
并将其直接传回响应中。因为您使用的是 JsonNode
,将自动设置 will be 响应的内容类型。
(对于此示例,我在 /conf
中创建了一个名为 foo.json
的文件。)
package controllers;
import java.io.IOException;
import java.io.InputStream;
import javax.inject.Inject;
import com.fasterxml.jackson.databind.JsonNode;
import play.Environment;
import play.libs.Json;
import play.mvc.Controller;
import play.mvc.Result;
public class SomeController extends Controller {
private final Environment env;
@Inject
public SomeController(final Environment env) {
// the environment is used to access local files
this.env = env;
}
public Result index() {
try (InputStream is = env.resourceAsStream("/foo.json")) {
final JsonNode json = Json.parse(is);
return ok(json);
} catch (IOException e) {
return internalServerError("Something went wrong");
}
}
}
我用这个基本代码自己解决了:
package controllers;
import com.fasterxml.jackson.databind.JsonNode;
import play.Environment;
import play.libs.Json;
import play.mvc.Controller;
import play.mvc.Result;
import javax.inject.Inject;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class CustomersController extends Controller {
private final Environment env;
@Inject
public CustomersController(final Environment env) {
// the environment is used to access local files
this.env = env;
}
public Result index() {
File file = new File("absolute path/items.json");
try (
FileInputStream is =new FileInputStream(file);
){
final JsonNode json = Json.parse(is);
return ok(json);
} catch(IOException e){
return internalServerError("Something went wrong");
}
}
}
我开始学习 Play Java,并发现了许多不同的样本(通常没有导入等)关于如何做主题中解释的内容。 我正在使用 Play 2.5 和 JDK 8,并配置了我自己的控制器。该文件位于我可以从控制器 Java class 访问的目录中,但我不清楚读取 JSON 文件的最佳做法是什么:通过 Jackson?或 java.io.* 函数? 是否有可能从专家那里获得最小的工作样本? 我尝试按照本指南进行操作,但代码总是出错(示例代码既没有最后的逗号!): https://www.playframework.com/documentation/2.5.x/JavaJsonActions
基本上我的jsonitems.json在..workspace\play-java\app\data\items.json.
JSON 文件是这样的: [ { "id": 10000000, "name": "name1", "starttime": "2015-06-18T06:26:56-07:00", "endtime": "2015-07-08T12:47:16-07:00" }, ETC。 ]
我想在读取文件的函数中我需要指定路径 'app/data/items.json' 或 'data/items.json'
提前致谢!
如果要将JSON传递给客户端,可以使用Json
class将输入流(或字符串)转换为JsonNode
并将其直接传回响应中。因为您使用的是 JsonNode
,将自动设置 will be 响应的内容类型。
(对于此示例,我在 /conf
中创建了一个名为 foo.json
的文件。)
package controllers;
import java.io.IOException;
import java.io.InputStream;
import javax.inject.Inject;
import com.fasterxml.jackson.databind.JsonNode;
import play.Environment;
import play.libs.Json;
import play.mvc.Controller;
import play.mvc.Result;
public class SomeController extends Controller {
private final Environment env;
@Inject
public SomeController(final Environment env) {
// the environment is used to access local files
this.env = env;
}
public Result index() {
try (InputStream is = env.resourceAsStream("/foo.json")) {
final JsonNode json = Json.parse(is);
return ok(json);
} catch (IOException e) {
return internalServerError("Something went wrong");
}
}
}
我用这个基本代码自己解决了:
package controllers;
import com.fasterxml.jackson.databind.JsonNode;
import play.Environment;
import play.libs.Json;
import play.mvc.Controller;
import play.mvc.Result;
import javax.inject.Inject;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class CustomersController extends Controller {
private final Environment env;
@Inject
public CustomersController(final Environment env) {
// the environment is used to access local files
this.env = env;
}
public Result index() {
File file = new File("absolute path/items.json");
try (
FileInputStream is =new FileInputStream(file);
){
final JsonNode json = Json.parse(is);
return ok(json);
} catch(IOException e){
return internalServerError("Something went wrong");
}
}
}