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/"
}
}
}
私は、次のようにリポジトリJSON文字列を使用してRepository
オブジェクトを作成しようとしました。
class Repository{
String repositoryURL;
getter and setters
}
その後、私はそれが例外を以下返し、
Map mymap= new Gson().fromJson(JsonObjectReadFromFile(aboveString), HashMap.class);
RepositoryJsonStringvalue = mymap.get("Repository");
Repository r=new Gson().fromJson(RepositoryJsonStringvalue, Repository.class);
を使用してJSONオブジェクトをシリアル化desalinize。
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は私が解決する方法を知っていることを投げるように思えますこの。
注:私は、私は私がしてもJSONオブジェクトにURL http://11.11.111.11/
を置くことができる方法を知っていただきたいと思いobject.So私はリポジトリにキャストすることができ、文字列から特殊文字: \
を削除する場合、問題がrepositoryURL
属性にあった見つけた私上記のオブジェクトは有効なJsonです。次のように
おかげでポストを更新しましたホープ 'Repository'が問題のようobject.seemsにキャストしたいが'それはいくつかの終端されていない値が含まれrepositoryURL'ました。 – gihan
リポジトリオブジェクトを解析して取得する別の方法が追加されました。 – notionquest
私のtime.itを保存していただきありがとうございます。ちょっとした説明があります.Jsonのシリアル化とデシリアライゼーションのために 'toString'をオーバーライドすることと関係がありますか?field.canで' @ SerializedName'を入れても問題ありません。 。 – gihan