JSONedit icon indicating copy to clipboard operation
JSONedit copied to clipboard

Editor doesn't allow keys which start with $

Open jusio opened this issue 12 years ago • 4 comments

screen shot 2013-09-16 at 10 15 33 pm

jusio avatar Sep 16 '13 20:09 jusio

This is because AngularJS stores some hidden values with the $-prefix. But it would certainly be possible to prefix all our stuff with, say, _ (so that $asdf is encoded as _$asdf) and then go back and forth between these representations. Pull requests are welcome :)

mb21 avatar Sep 17 '13 12:09 mb21

Well the only bulletproof (and relatively painless), to deal with problem in my opnion, is not use object structure as model, but create a special model for working with json. E.g after json is parsed, object is not passed into the scope, but is transformed to the following form:

 {
  properties:[{name:"stringProp": value:"stringValue"},
                  {name:"arrayProp": value:[{properties:[]},"stringItem",1]  }
  ]   
}

Such model corresponds to the following JSON

{
   "stringProp":"stringValue",
   "arrayProp":[{},"stringItem",1]
}

If you pass such model into scope, it doesn't matter which keys angular adds later, because you interested only in specific keys. You can use also some escaping, but i believe it is way too error prone.

jusio avatar Sep 17 '13 12:09 jusio

What's so error prone about this: prefixing each key with a _ when reading from the text area, removing the first char (i.e. the _) when writing back from the Angular model to the textarea.

mb21 avatar Sep 17 '13 12:09 mb21

Well I think it is simply cleaner, since you don't have to always remember that correct keys should have '_' prefix (at least you have to add it in key name editor/render, may be there some other places).

But the is definitely choice is yours, I'm just suggesting since I had to do something similar in the past, tried to use escaping at first, then I said screw it, and just implemented using special model structure and in the end it was much easier.

jusio avatar Sep 17 '13 12:09 jusio