Seite 1 von 1
JSON mit escapedten Zeichen
Verfasst: 23.01.2016 15:00
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)
Re: JSON mit escapedten Zeichen
Verfasst: 23.01.2016 16:06
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)
Re: JSON mit escapedten Zeichen
Verfasst: 23.01.2016 19:40
von freak
Yup, da hat sich beim decodieren der Unicode-Escapes ein Fehler eingeschlichen. Ist in der nächsten Version behoben.
Re: JSON mit escapedten Zeichen
Verfasst: 24.01.2016 21:24
von Andesdaf
Danke, dann behelfe ich mir bis dahin.
// EDIT: In PB 5.42 Beta 1 korrigiert. Danke!
