将Json字符串强制转换为对象时,Gson malformedJsonException

吉汉·马杜兰加

我创建了一个有效的Json字符串。我Gson使用以下方法创建了Json对象。

Map myMap=new HashMap();
myMap.put("dryRunTest",dryRunTestObj);
myMap.put("port",22);
myMap.put("Repository",RepositoryObj);
etc...

Map temp = new HashMap();
temp.put("configuration",myMap);
new GsonBuilder().setPrettyPrinting().create().toJson(temp);
//This gave me the below Json Object that would write to a file.

{
  "configuration": {
    "dryRunTest": {
      "id": null,
      "defaultName": "sample.xml",
      "ParamsMap": null,
      "defaultVersion": "1.2",
      "dryRunTestOn": true
    },
    "port": 2323,
    "ip": "11.11.11.111",
    "configFile": "config.json",
    "Name": "007",
    "URL": "http://11.111.111.51/ma/api/ag/",
    "Password": "123",
    "configDirectory": "sss",
    "platform": "Windows7",
    "Repository": {
      "repositoryURL": "http://11.11.111.11/"
    }
  }
}

我曾尝试Repository使用Repository Json字符串创建对象,如下所示。

class Repository{
String repositoryURL;
getter and setters
}

然后我使用以下代码对序列化Json对象进行脱盐处理,

 Map mymap= new Gson().fromJson(JsonObjectReadFromFile(aboveString), HashMap.class);

RepositoryJsonStringvalue = mymap.get("Repository");

Repository r=new Gson().fromJson(RepositoryJsonStringvalue, Repository.class);

它返回以下异常。

com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Unterminated object at line 1 column 21

似乎问题在于它的值,repositoryURL但是我将相同的值放入另一个顶级属性中URL=http://11.11.111.11/,然后可以获取值,但是当它放入对象类型时,它会抛出该错误。请让我知道如何解决此问题。

注意:我发现问题出在repositoryURL属性中,如果我: \从字符串中删除特殊字符可以转换为Repository对象,那么我想知道如何将URLhttp://11.11.111.11/放入json对象中,即使我上面的对象是有效的Json也是如此。

观念探索

POJO类应如下所示:

我没有在下面的POJO类中包括所有字段。您可以包括并尝试。

ParentConfiguration类别:-

public class ParentConfiguration implements Serializable{


    private static final long serialVersionUID = -1185592608319193198L;

    private Configuration configuration;

    @Override
    public String toString() {
        return "ParentConfiguration [configuration=" + configuration + "]";
    }


}

配置类:-

public class Configuration implements Serializable {

    @Override
    public String toString() {
        return "Configuration [port=" + port + ", URL=" + URL + ", repository=" + repository + "]";
    }

    private static final long serialVersionUID = 8642243843212797330L;

    private Integer port;

    private String URL;



    @SerializedName("Repository")
    private Repository repository;

}

资料库类别:-

public class Repository implements Serializable{

    @Override
    public String toString() {
        return "Repository [repositoryURL=" + repositoryURL + "]";
    }
    private static final long serialVersionUID = -1891563116357617243L;
    private String repositoryURL;

}

主要方法:-

public static void main(String[] args) {
        String jsonString = "{  \"configuration\": {\"dryRunTest\": {\"id\": null,\"defaultName\": \"sample.xml\",      \"ParamsMap\": null,      \"defaultVersion\": \"1.2\",      \"dryRunTestOn\": true    },    \"port\": 2323,    \"ip\": \"11.11.11.111\",    \"configFile\": \"config.json\",    \"Name\": \"007\",    \"URL\": \"http://11.111.111.51/ma/api/ag/\",    \"Password\": \"123\",    \"configDirectory\": \"sss\",    \"platform\": \"Windows7\",    \"Repository\": {      \"repositoryURL\": \"http://11.11.111.11/\"    }  }}";


        Gson gson = new Gson();
        ParentConfiguration parentConfiguration = gson.fromJson(jsonString, ParentConfiguration.class);
        System.out.println(parentConfiguration.toString());
    }

输出:-

ParentConfiguration [configuration=Configuration [port=2323, URL=http://11.111.111.51/ma/api/ag/, repository=Repository [repositoryURL=http://11.11.111.11/]]]

如果可以将其解析为JsonObject,则不必转换为Map,而是可以轻松实现以下结果:

import org.apache.commons.io.IOUtils;

JsonObject jsonObject= new Gson().fromJson(IOUtils.toString(ParseUrl.class.getResourceAsStream("/configuration.json")), JsonObject.class);
        Repository respository = gson.fromJson(jsonObject.getAsJsonObject("configuration").get("Repository"), Repository.class);
        System.out.println(respository);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Retrofit2.0获取MalformedJsonException而json似乎正确吗?

来自分类Dev

登录到API商店时com.google.gson.stream.MalformedJsonException

来自分类Dev

如何解决 MalformedJsonException:即使在将 JsonReader 设置为 lenient 后仍存在的未终止对象

来自分类Dev

造成原因:com.google.gson.JsonSyntaxException:com.google.gson.stream.MalformedJsonException:预期第':'行

来自分类Dev

造成原因:com.google.gson.JsonSyntaxException:com.google.gson.stream.MalformedJsonException:预期第':'行

来自分类Dev

MalformedJsonException:行的预期名称

来自分类Dev

Android Studio MalformedJsonException

来自分类Dev

将字符串从xml强制转换为类对象

来自分类Dev

带有Retrofit API的MalformedJsonException?

来自分类Dev

使用Gson将JSON字符串转换为对象数组

来自分类Dev

如何将JSON字符串转换为GSON对象?

来自分类Dev

如何使用gson将json转换为字符串

来自分类Dev

将字符串ID强制转换为字符串对象

来自分类Dev

获取异常:com.google.gson.JsonSyntaxException:com.google.gson.stream.MalformedJsonException:预期在第1行第24列为“:”

来自分类Dev

javascript将JSON字符串转换为JSON对象

来自分类Dev

无法将 json 字符串转换为 json 对象

来自分类Dev

Spring - 将 JSON 字符串转换为 JSON 对象

来自分类Dev

将点分隔的字符串转换为JSON对象

来自分类Dev

将JSON对象数组转换为字符串

来自分类Dev

将打字稿对象转换为json字符串

来自分类Dev

ExpressJS / AngularJS:将JSON对象转换为字符串

来自分类Dev

将字符串转换为Javascript中的JSON对象

来自分类Dev

将HTML字符串转换为JSON对象

来自分类Dev

无法将JSON字符串转换为对象?

来自分类Dev

将jira json字符串转换为java对象

来自分类Dev

将JSON字符串转换为对象Javascript

来自分类Dev

将字符串转换为JSON对象C#

来自分类Dev

将字符串转换为Javascript中的JSON对象

来自分类Dev

无法将空字符串转换为JSON对象

Related 相关文章

  1. 1

    Retrofit2.0获取MalformedJsonException而json似乎正确吗?

  2. 2

    登录到API商店时com.google.gson.stream.MalformedJsonException

  3. 3

    如何解决 MalformedJsonException:即使在将 JsonReader 设置为 lenient 后仍存在的未终止对象

  4. 4

    造成原因:com.google.gson.JsonSyntaxException:com.google.gson.stream.MalformedJsonException:预期第':'行

  5. 5

    造成原因:com.google.gson.JsonSyntaxException:com.google.gson.stream.MalformedJsonException:预期第':'行

  6. 6

    MalformedJsonException:行的预期名称

  7. 7

    Android Studio MalformedJsonException

  8. 8

    将字符串从xml强制转换为类对象

  9. 9

    带有Retrofit API的MalformedJsonException?

  10. 10

    使用Gson将JSON字符串转换为对象数组

  11. 11

    如何将JSON字符串转换为GSON对象?

  12. 12

    如何使用gson将json转换为字符串

  13. 13

    将字符串ID强制转换为字符串对象

  14. 14

    获取异常:com.google.gson.JsonSyntaxException:com.google.gson.stream.MalformedJsonException:预期在第1行第24列为“:”

  15. 15

    javascript将JSON字符串转换为JSON对象

  16. 16

    无法将 json 字符串转换为 json 对象

  17. 17

    Spring - 将 JSON 字符串转换为 JSON 对象

  18. 18

    将点分隔的字符串转换为JSON对象

  19. 19

    将JSON对象数组转换为字符串

  20. 20

    将打字稿对象转换为json字符串

  21. 21

    ExpressJS / AngularJS:将JSON对象转换为字符串

  22. 22

    将字符串转换为Javascript中的JSON对象

  23. 23

    将HTML字符串转换为JSON对象

  24. 24

    无法将JSON字符串转换为对象?

  25. 25

    将jira json字符串转换为java对象

  26. 26

    将JSON字符串转换为对象Javascript

  27. 27

    将字符串转换为JSON对象C#

  28. 28

    将字符串转换为Javascript中的JSON对象

  29. 29

    无法将空字符串转换为JSON对象

热门标签

归档