获取org.json.JSONEXCEPTION:解码令牌时字符处未确定的对象

Getting org.json.JSONEXCEPTION: Unteterminated object at character when decoding token

因此,当我使用方法 Base64.decodeBase64() from import org.apache.commons.codec.binary.Base64; 时,我试图在我的 android 应用程序中解码 JWT 令牌;
当我打印从解码令牌中获得的字符串时,我在字符串“������”的末尾得到了这些字符,而实际上它应该是“}}”

代码如下:

String token = loadFromCache("token");
String[] split_String = token.split("\.");
String base64EncodedBody = split_String[1];
System.out.println("BASE64 Body: " + base64EncodedBody);
String body = new String(Base64.decodeBase64(base64EncodedBody.getBytes()));
System.out.println("BODY: " + body);
try {
    JSONObject jsonObject = new JSONObject(body).getJSONObject("employee");
} catch (JSONException e) {
    e.printStackTrace();
}

令牌有效,我确实得到了几乎所有正确的值。只是它以字符������而不是}}结尾。任何帮助表示赞赏

使用 "import com.auth0.android.jwt.JWT;"

的替代解决方案
return new JWT(loadFromCache("token")).getClaim("employee").asObject(Employee.class);

这个 returns 声明 "employee" 作为一个 Employee 对象,所以我可以只使用 getter 来获取值。
示例:employee.getId() 等..

注意:loadFromCache 方法只是 returns 其键指定的值。这里我想要由键 "token".

定义的值

使用Android的Base64 class:

String body = new String(Base64.decode(base64EncodedBody.getBytes(Charset.forName("UTF-8")), Base64.NO_WRAP), Charset.forName("UTF-8"));

使用您自己的 Base64 标志和编码。