json 문자열을 Java 객체로 변환하려면 gson을 사용하고 있습니다. 결과 2의 값은 결과 1과 정확히 동일합니다. (디버거로부터 복사; Backslashs 첨가) 다음과 같은 예외가 변환 동안 발생되는 결과 1gson throw MalformedJsonException
: com.google.gson.JsonSyntaxException을 : com.google.gson.stream.MalformedJsonException : 기대 값 EOF를 행 1 열 (170)에
결과 2이 정상적으로 작동합니다.
json 문자열은 jsonlint.com에 따라 유효합니다.
public static Userinfo getUserinfo()
{
String result1 = http.POST("https://www.bitstamp.net/api/balance/",
postdata, true);
String result2 = "{\"btc_reserved\": \"0\", \"fee\": \"0.5000\", \"btc_available\": \"0.10000000\", \"usd_reserved\": \"0\", \"btc_balance\": \"0.10000000\", \"usd_balance\": \"30.00\", \"usd_available\": \"30.00\"}";
Gson gson = new Gson();
Userinfo userinfo1 = gson.fromJson(result1, Userinfo.class); //throws Exception
Userinfo userinfo2 = gson.fromJson(result2, Userinfo.class); //works fine
return userinfo1;
}
private class Userinfo {
public Userinfo(){
}
public float usd_balance;
public float btc_balance ;
public float usd_reserved;
public float btc_reserved;
public float usd_available;
public float btc_available;
public float fee;
public float last_update;
}
고마워요! 내 HTTP 클래스는 json 문자열을 256 바이트 char 버퍼에 다운로드 한 다음 문자열 (result1)로 변환했습니다.그 때문에 결과 1의 길이는 169 대신 255입니다. – Non
동일한 문제가있었습니다. 예외적 인 종류의 전체 EOF 일은 저를 던져줬고, 제 문제는 순수하고 단순하게 나빴던 JSON을 형성했습니다. – Kong
동일한 문제가 있었지만 FileChannel을 통해 JSON을 얻었습니다. 나는 인코딩이 완벽하다는 것을 확신했다. 내가 한 일은 HDD의 파일에서 String red에 trim() 메서드를 호출하는 것이 었습니다.이 방법으로 문제가 해결되었습니다. –