Описывает JJWT удаленные кавычки строки JSON -Java - PullRequest
0 голосов
/ 13 сентября 2018

Мой веб-сайт отправляет JWT (встроенный в php) в мое приложение, разработанное на Java.

JWT содержит строку JSON внутри настраиваемого поля с именем DATI.Я использую библиотеку JJWT, чтобы расшифровать строку, содержащуюся в поле DATI:

Claims MY_CLAIMS = Jwts.parser().setSigningKey(SECRET_KEY__Byte).parseClaimsJws(STRING_JWT).getBody(); 
ArrayList ARRAY = MY_CLAIMS .get("DATI", ArrayList.class);
String DECODED_STRING_INSIDE_DATI =String.valueOf(ARRAY);

Я получаю строку "DECODED_STRING_INSIDE_DATI" (то есть строку JSON) правильным способом, но по какой-то причине цитатапометки (") удалены:

[{id=3, id_rivenditore=-1, id_cliente=-1, ip_address=192.168.1.6, nome=DonalDuck, note=ByBye, enabled=1}]

Я проверял STRING_JWT в" https://jwt.io/",, и там я правильно получаю кавычки:

{
  "iss": "www.mySite.it",
  "exp": 1536913435,
  "sub": "WebApp",
  "DATI": [
    {
      "id": "3",
      "id_rivenditore": "-1",
      "id_cliente": "-1",
      "ip_address": "192.168.1.6",
      "nome": "DonalDuck",
      "note": "ByBye",
      "enabled": "1"
    }
  ]
}

Я действительно незнаю, как ее решить, потому что я не могу правильно прочитать строку JSON.Я использую библиотеку Джексона, чтобы прочитать Json String

1 Ответ

0 голосов
/ 14 сентября 2018

Это может помочь,

У вас уже есть ArrayList, содержащий требуемые утверждения как,

ArrayList ARRAY = MY_CLAIMS.get("DATI", ArrayList.class);

Чтобы получить строку утверждений JSON, включенную в этот ArrayList, попробуйте следующий код.

ByteArrayOutputStream out = new ByteArrayOutputStream();
ObjectMapper mapper = new ObjectMapper();
mapper.writeValue(out, ARRAY);
byte[] data = out.toByteArray();
String str = new String(data);

str содержит правильно отформатированную строку JSON (с кавычками).

...