JSON mit escapedten Zeichen

Hier werden, insbesondere in den Beta-Phasen, Bugmeldungen gepostet. Das offizielle BugForum ist allerdings hier.
Andesdaf
Moderator
Beiträge: 2658
Registriert: 15.06.2008 18:22
Wohnort: Dresden

JSON mit escapedten Zeichen

Beitrag von Andesdaf »

Vielleicht stehe ich ja komplett auf dem Schlauch, aber wie bekomme ich diese escapedten Zeichen
korrekt umgewandelt?

Code: Alles auswählen

zText.s = ~"{\"parse\":\"Kl\\u00e4rung, S\\u00fcden\"}"

iJSON = ParseJSON(#PB_Any, zText)
Debug ComposeJSON(iJSON)
Win11 x64 | PB 6.00 (x64)
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: JSON mit escapedten Zeichen

Beitrag von Nino »

Die JSON-Bibliothek versucht anscheinend, die Unicode-Escape-Sequenzen umzuwandeln. Das funktioniert allerdings nicht, es scheint ein Bug in der Bibliothek zu sein.

Code: Alles auswählen

zText.s = ~"{\"parse\":\"Kl\\u00e4rung, S\\u00fcden\"}"
MessageRequester("OK", zText)

iJSON = ParseJSON(#PB_Any, zText)

obj = JSONValue(iJSON)

msg$ = ""
If ExamineJSONMembers(obj)
   While NextJSONMember(obj)
      msg$ + JSONMemberKey(obj) + " = " + GetJSONString(JSONMemberValue(obj)) + #CRLF$
   Wend
EndIf
MessageRequester("Fehler", msg$)

MessageRequester("Fehler", ComposeJSON(iJSON))
Daher muss man es zur Zeit wohl mit einer kleinen Prozedur selbst machen:

Code: Alles auswählen

Procedure.s DecodeUnicodeChars(s$)
   Protected pos.i, code$, char$
   
   pos = FindString(s$, "\u")
   While pos
      code$ = Mid(s$, pos, 6)
      char$ = Chr(Val("$" + Mid(code$, 3)))
      s$ = ReplaceString(s$, code$, char$)
      pos = FindString(s$, "\u", pos+1)
   Wend
   
   ProcedureReturn s$
EndProcedure


zText.s = ~"{\"parse\":\"Kl\\u00e4rung, S\\u00fcden\"}"

zText = DecodeUnicodeChars(zText)
Debug zText

iJSON = ParseJSON(#PB_Any, zText)
Debug ComposeJSON(iJSON)
freak
PureBasic Team
Beiträge: 766
Registriert: 29.08.2004 00:20
Wohnort: Stuttgart

Re: JSON mit escapedten Zeichen

Beitrag von freak »

Yup, da hat sich beim decodieren der Unicode-Escapes ein Fehler eingeschlichen. Ist in der nächsten Version behoben.
Andesdaf
Moderator
Beiträge: 2658
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Re: JSON mit escapedten Zeichen

Beitrag von Andesdaf »

Danke, dann behelfe ich mir bis dahin.

// EDIT: In PB 5.42 Beta 1 korrigiert. Danke! :allright:
Win11 x64 | PB 6.00 (x64)
Antworten