有人可以指导我如何在没有任何预定义对象的情况下将JSONWriter转换为GSON中的JsonObject。
JsonWriter writer = new JsonWriter(new FileWriter("C:\\Users\\ravr\\Desktop\\outputJSONSChema.json"));
writer.setIndent( " " );
writer.beginObject();
writer.name( "$schema" ).value( "http://json-schema.org/draft-04/schema#" );
writer.name( "type" ).value( "object" );
writer.name("properties");
writer.beginObject();//1Properties START
writer.name( "Country" );
writer.beginObject();//2EMP START
writer.name( "type" ).value( "array" );
writer.name( "minItems" ).value(0);
writer.name( "maxItems" ).value("undefined");
writer.name( "items" );
writer.beginObject();//3 EMP ITEM START
writer.name( "type" ).value( "object" );
writer.name( "properties" );
writer.beginObject();//
writer.name( "ID" );
writer.beginObject();// 5 EMP ID START
writer.name( "type" ).value( "String" );
writer.endObject(); // 5 EMP ID END
writer.name( "NAME" );
writer.beginObject();// 5 EMP ID START
writer.name( "type" ).value( "String" );
writer.endObject(); // 5 EMP ID END
writer.endObject();
writer.endObject();//3 EMP ITEM END
writer.name( "required" );
writer.beginArray();
writer.value( "ID" );
writer.value( "NAME" );
writer.endArray();
writer.endObject();//2EMP END
writer.endObject();//1Properties END
writer.endObject();
writer.flush();
答案 0 :(得分:2)
快速而肮脏的解决方案是使用StringWriter
而不是文件编写器:
StringWriter sw = new StringWriter();
JsonWriter writer = new JsonWriter(sw);
// .. writing code
JsonObject obj = new JsonParser().parse(sw.toString()).getAsJsonObject();
否则你会使用类似的东西:
JsonObject obj = new JsonObject();
obj.add("name", jsonElement);
obj.addProperty("otherName", "value");
答案 1 :(得分:0)
您可以使用com.google.gson.internal.bind.JsonTreeWriter
(扩展JsonWriter
):
JsonTreeWriter writer = new JsonTreeWriter();
writer.beginObject();
// write additional JSON data
writer.endObject();
JsonObject obj = (JsonObject)writer.get();
这可以避免序列化和解析JSON数据。
由于JsonTreeWriter
不是公共Gson API的一部分,您可能希望将JsonTreeWriter
源复制到您的包中(这很容易,因为它只使用公共Gson API)。 / p>