我已經使用Gson
創建了一個Json字符串,這是有效的。我使用下面的方法創建了Json對象。當把Json字符串轉換爲對象時,Gson malformedJsonException
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 Json字符串的Repository
對象,如下所示。
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/
,然後可以得到的值,但是當它把裏面的物體鍵入它拋出error.Please讓我知道如何解決這個。
注意:我發現問題是repositoryURL
屬性,如果我從字符串中刪除特殊字符: \
我可以同時投射到庫object.So我想知道我怎麼可以把URL http://11.11.111.11/
中JSON對象,甚至我的上面的對象是有效的Json。
感謝您reply.I已經更新了更多的細節後請refer.I要轉換爲'Repository' object.seems像問題'repositoryURL'它包含了一些未終止值。 – gihan
增加了解析和獲取存儲庫對象的另一種方法。 – notionquest
謝謝你保存我的time.it工作fine.few澄清是否有任何與重寫'toString'爲Json序列化和反序列化的關係,或者足夠把'@ SerializedName'放在field.c中,請你解釋爲什麼我以前的代碼有異常。 – gihan