簡體   English   中英

我們如何在GSON中將JsonWriter轉換為JsonObject

[英]How can we Convert JsonWriter To JsonObject in GSON

有人可以指導我如何在沒有任何預定義對象的情況下在GSON中將JsonWriter轉換為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();

快速而骯臟的解決方案是使用StringWriter而不是文件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");

您可以使用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)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM