如何将字符串(大字符串对象)对象解析为json?

时间:2018-02-22 07:30:40

标签: java json gson

我可以使用Gson解析此行:

<form action="" method="POST"> <input type="text" name="demo" value="Demo"><br/> <input type="text" name="demo2" value="Demo 2"><br/> <input type="text" name="array[]" value="Array 1"><br/> <input type="text" name="array[]" value="Array 2"><br/> <input type="text" name="array[]" value="Array 3"><br/> <input type="text" name="array[]" value="Array 4"><br/> <input type="submit"> </form> Array ( [demo] => Demo [demo2] => Demo 2 [array] => Array ( [0] => Array 1 [1] => Array 2 [2] => Array 3 [3] => Array 4 ) )

但是,我无法使用Gson解析此行:

realm_access: {roles: [offline_access,uma_authorization] } }

正如后面的String之间有空格一样,它会引发以下错误

  

com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:   期望一个字符串,但在第1行第533行路径上是BEGIN_OBJECT   $ .resource_access at   com.google.gson.internal.bind.ReflectiveTypeAdapterFactory $ Adapter.read(ReflectiveTypeAdapterFactory.java:224)     在com.google.gson.Gson.fromJson(Gson.java:888)at   com.google.gson.Gson.fromJson(Gson.java:853)at   com.google.gson.Gson.fromJson(Gson.java:802)at   com.google.gson.Gson.fromJson(Gson.java:774)

2 个答案:

答案 0 :(得分:0)

在Json中,您无法使用空格制作offline access之类的内容,如果您使用"offline access"之类的双引号,则需要预期。

在Json格式中,通常,开发人员使用_这样的下划线offline_access或像offlineAccess这样的骆驼案例。

因此,如果你想要带空格的值,只需在双引号之间添加它。

答案 1 :(得分:0)

如果保留空格并不重要,可以使用正则表达式删除它们:

String json = realm_access: {roles: [offline_access,uma_authorization] } };
json.replaceAll("\\s+","");
String output = new Gson().toJson(json);