- Home /
JsonUtility deserialization via JSON file doesn't work on WWW, works on File.ReadAllText
So I've got JSON files which hold my game's level data (various puzzles for a puzzle game). I at first planned to develop solely for iOS, but decided to also support HTML5 mostly to demo the game easier. I say this, to note that the JSON files themselves are totally valid and worked at first w/ iOS and File.ReadAllText
.
To make this transition, I had to stop using File.ReadAllText
to load files and use Unity's WWW
library instead. For one file, deserialization via JsonUtility.FromJson<T>(www.text)
worked just fine, but the next file didn't take, without a specific error. This file is quite large (156 kb) and has escaped quotes within quotes to reference JSON structures within strings within my overall JSON structure. e.g., a Puzzle looks like such: { "rows": 2 "cols": 1, ... "solvedPuzzleJSON": "{ \"internalJsonKey\": \"value\" }" }
Is there some type of text formatting that occurs on File.ReadAllText
that doesn't automatically happen with the WWW#text
property?
Answer by ZeN12 · Nov 21, 2017 at 09:32 AM
The escaped quotes aren't supported directly in JsonUtility, the solution is to set it to a string (as variable) and parse again with JsonUtility.
@ZeN12 - That's exactly what I'm doing. Sorry I wasn't elaborate. The entire structure of a puzzle looks like this, where the "solved" state is stored as a string of JSON w/ quotes escaped.
{ "rows": 2 "cols": 1, ... "solvedPuzzleJSON": "{ \"internalJson$$anonymous$$ey\": \"value\" }" }
I then have a PostDeserializer
method on the objects I deserialize for those conversions.
This works fine when loading the JSON via File.ReadAllText
, but balks when loading the file via WWW and reading the string provided by WWW#text
. When I log the output of both they look the same but I'm not sure if I'm missing some sort of encoding / decoding that may be happening.
Try to save www-json to a fle and check the difference. Also it maybe a problem with WWW, try to use different HTTP client (there are a lot on asset store).
Your answer
Follow this Question
Related Questions
iPhone bad URL 0 Answers
How to send text in a json file in mail.body? 0 Answers
Create a glossary using Simple JSON, loading data dynamically 1 Answer
Parsing Json from www response 2 Answers