Я пытаюсь проанализировать строку json, которую я получаю от своего веб-сервиса asmx через IIS. Строка, которую я получаю, как показано ниже:
"{\"Name\":\"Waqas Aslam\",\"Company\":\"ABC Systems AB\",\"Address\":\"myStreet 4\",\"Phone\":\"123456\",\"Country\":\"Sweden\"}"
Проблема в том, что я могу успешно получить строку ответа, но не могу ее проанализировать. Вот мой код:
try{
InputStream source = getJson(URL);
String s = streamToString(source);
Log.i(TAG, s);
GsonBuilder gsonb = new GsonBuilder();
Gson gson = gsonb.create();
JSONObject j = new JSONObject(s);
Employee em = gson.fromJson(j.toString(), Employee.class);
lblResult.setText(em.Company);
}
catch (Exception e) {
Log.e(TAG, e.toString());
}
вот метод streamToString:
public static String streamToString(InputStream is) {
//as per 64K size
BufferedReader reader = new BufferedReader(new InputStreamReader(is), 65728);
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line);
}
}
catch (IOException e) { e.printStackTrace(); }
finally {
try { is.close(); }
catch (Exception e) { e.printStackTrace(); }
}
return sb.toString();
}
а вот классный работник:
import com.google.gson.annotations.SerializedName;
public class Employee {
@SerializedName("Name")
public String Name;
@SerializedName("Company")
public String Company;
@SerializedName("Address")
public String Address;
@SerializedName("Phone")
public String Phone;
@SerializedName("Country")
public String Country;
}
Вот исключение, которое я получаю:
02-02 10:08:28.877: E/TestJSON(3223): org.json.JSONException: Value {"Name":"Waqas Aslam","Company":"ABC Systems AB","Address":"myStreet 4","Phone":"123456","Country":"Sweden"} of type java.lang.String cannot be converted to JSONObject
Если я вручную (по коду) предоставляю строку JSON для JSONObject, то он работает нормально, но не со строкой, которую я получаю от сервера. Что-то мне нужно изменить на стороне сервера?
Если хотите, вы можете попробовать извлечь json с моего тестового сервера, используя HttpPost
с этого URL http://test1.phoniro.se/AndroidTestWebService/Service.asmx/TestJSON2