0
我使用改造得到以下论断方案从API的结果:反序列化字符串考虑空单为空字符串
{ "somekey": "somestringvalue" }
{ "somekey": [] }
{ "somekey": "" }
如果双方[]
和""
实际上表示相同的值:一个空字符串。在解析时
Gson gson = new GsonBuilder()
.registerTypeAdapter(String.class, new StringAdapter()).create();
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint(END_POINT)
.setConverter(new GsonConverter(gson))
.build();
但是,它仍然产生了我同样的错误:
所以我写了一个TypeAdapter
这样的:
public class StringAdapter extends TypeAdapter<String> {
@Override
public void write(JsonWriter out, String value) throws IOException {
}
@Override
public String read(JsonReader in) throws IOException {
if(in.peek() == JsonToken.BEGIN_ARRAY){
return "";
}
return in.nextString();
}
}
然后我registred像这样
retrofit.
RetrofitError
:com.google.gson.
JsonSyntaxException
:java.lang.
IllegalStateException
:需要一个名字,但被BEGIN_ARRAY
在行1列85路
我想我missunderstood的东西,但什么?