Java JSON创建
我有下面的JSONJava JSON创建,java,json,Java,Json,我有下面的JSON { "display": { "icon": { "item": "minecraft:elytra" }, "title": "Learn to Fly" }, "parent": "minecraft:story/enter_end_gateway", "criteria": { "
{
"display": {
"icon": {
"item": "minecraft:elytra"
},
"title": "Learn to Fly"
},
"parent": "minecraft:story/enter_end_gateway",
"criteria": {
"elytra": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "minecraft:elytra",
"data": 1
}
]
}
}
}
}
我怎样才能在Java中创建它
以及能够获得每个元素,如标题
谢谢 从谷歌上查看这个库,它很容易使用,并且有很多API可以与JSON一起使用而不是像这样愚蠢地创建代码
JSONObject jsonObject=new JSONObject();
JSONObject jsonObject2=new JSONObject();
JSONObject jsonObject3=new JSONObject();
jsonObject.put("display",jsonObject3);
您可以使用非常简单的方法创建json对象,而无需在代码上浪费时间。为每个新的json对象创建一个类,并在它们之间建立关系。您询问的过程称为解组(将json/XML/其他格式的序列化对象解析为对象,以便在面向对象的上下文中使用) 我建议你看一看。它是一个流行的库,在Spring(MVC模块)等著名框架中使用。 创建域对象后,您可以将
jsonData
转换为DomainClass
类的实例
DomainClass instance = new ObjectMapper().readValue(jsonData, DomainClass.class);
jsonData
源可以是文件
s、输入流
s、字节
数组、字符串
s和。这取决于你选择最方便的方式来获取数据
以及能够获得每个元素,如标题
当实例准备就绪时,您可以通过访问器(即get
方法)自由获取元素(现在是字段)。以下是使用java中的org.json库构建json的代码:
import org.json.JSONArray;
import org.json.JSONObject;
public class JSONBuilderMinecraft {
public static void main(String args[]) throws Exception{
JSONObject mainJson = new JSONObject();
//inner most json array
JSONArray itemarray=new JSONArray();
//inner most json
JSONObject itemsJson= new JSONObject();
itemsJson.put("item", "minecraft:elytra");
itemsJson.put("data", 1);
itemarray.put(itemsJson);
JSONObject conditions = new JSONObject();
conditions.put("items", itemarray);
JSONObject elytra = new JSONObject();
elytra.put("trigger", "minecraft:inventory_changed");
elytra.put("conditions", conditions);
mainJson.put("criteria", elytra);
mainJson.put("parent", "minecraft:story/enter_end_gateway");
JSONObject icon = new JSONObject();
icon.put("item", "minecraft:elytra");
JSONObject display = new JSONObject();
display.put("title", "Learn to Fly");
display.put("icon", icon);
mainJson.put("display", display);
System.out.println(mainJson.toString());
}
}
试试这个,效果很好:
public static void main(String[] args) throws JSONException {
String jsonString = "{\n"
+ " \"display\": {\n"
+ " \"icon\": {\n"
+ " \"item\": \"minecraft:elytra\"\n"
+ " },\n"
+ " \"title\": \"Learn to Fly\"\n"
+ " },\n"
+ " \"parent\": \"minecraft:story/enter_end_gateway\",\n"
+ " \"criteria\": {\n"
+ " \"elytra\": {\n"
+ " \"trigger\": \"minecraft:inventory_changed\",\n"
+ " \"conditions\": {\n"
+ " \"items\": [\n"
+ " {\n"
+ " \"item\": \"minecraft:elytra\",\n"
+ " \"data\": 1\n"
+ " }\n"
+ " ]\n"
+ " }\n"
+ " }\n"
+ " }\n"
+ " }";
JSONObject object = new JSONObject(jsonString);
JSONObject disp = object.getJSONObject("display");
String title = disp.getString("title");
System.out.println("title is " + title);
}
你想解析这个JSON吗?不,我想自己用不同的值来创建它(对于Minecraft.JSON)。我想知道如何创建每个元素(即使您使用了自己的示例),如果您想要创建一个Java POJO,那么使用这个可以帮助您创建表示JSONPOJO的类。谢谢!GSON在插口罐内(由minecraft提供)。你能给我一些GSON的例子吗?谢谢!如前所述above@Chazmondo,查看github上的文档:问题是创建json,而不是像上面的代码那样构建数据后检索数据。是的,没错,我认为他可以像我的代码一样使用字符串格式的json谢谢!我接受了这个答案!这是一个硬编码的解决方案,很难维护和读取,不是吗?是的,这只是一个开始。当然,您将发送动态值来替换硬编码值。我也推荐gson库。我已经用动态值对它进行了排序,这样,我会怎样做才能有像“criteria”:{“elytra”:{(在这个库中有项目)