試圖解析Salt CherryPy REST接口的輸出。該JSON是按照下面提供的Gson使用salt-net-api解析錯誤
{"info": [{"Function": "cmd.run", "jid": "20161111182415841377", "Target": "yesMyMaster", "Target-type": "glob", "User": "saltdev", "StartTime": "2016, Nov 11 18:24:15.841377", "Arguments": ["echo HELLO"], "Minions": ["yesMyMaster"], "Result": {}}], "return": [{}]}
這將導致以下錯誤:
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 147 path $.info[0].StartTime
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:224)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:129)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:220)
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:41)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:82)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:61)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:129)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:220)
at com.google.gson.Gson.fromJson(Gson.java:887)
at com.google.gson.Gson.fromJson(Gson.java:852)
at com.google.gson.Gson.fromJson(Gson.java:801)
的代碼很簡單,沒什麼特別的。
Gson gson = new Gson();
ResultInfoSet resultInfos = gson.fromJson(json, ResultInfoSet.class);
ResultInfo是Salt-Net-Api
一類具有GSON之前任何人遇到了類似的錯誤?
更新
如果我從JSON刪除"StartTime": "2016, Nov 11 18:24:15.841377"
,然後GSON工作正常。
感謝您指出JsonParser類,它是庫的一部分@lucidd'ResultInfoSet resultInfoSet = JsonParser.JOB_RESULTS.parse(json_str);'正確解析它。 – Nambi