copy a JSONValue
Alex via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Fri Aug 26 01:26:28 PDT 2016
On Friday, 26 August 2016 at 07:46:13 UTC, Daniel Kozak wrote:
> Another way is to implement deepCopy by yourself (something
> like below)
>
> import std.json;
> import std.stdio;
>
> JSONValue deepCopy(ref JSONValue val)
> {
> JSONValue newVal;
> switch(val.type)
> {
> case JSON_TYPE.STRING:
> newVal = JSONValue(val.str.idup);
> break;
> case JSON_TYPE.OBJECT:
> foreach (string key, value; val)
> {
> newVal[key] = value.deepCopy;
> }
> break;
> case JSON_TYPE.ARRAY:
> foreach (size_t index, value; val)
> {
> newVal[index] = value.deepCopy;
> }
> break;
> default:
> newVal = val;
>
> }
> return newVal;
> }
>
> void main()
> {
> string s = "{ \"language\": \"D\", \"rating\": 3.14,
> \"code\": 42 }";
> JSONValue j = parseJSON(s);
> writeln("code: ", j["code"].integer);
>
> auto j2 = j.deepCopy;
> j2["code"] = 43;
> writeln("code of j2: ", j2["code"].integer);
> writeln("code of j: ", j["code"].integer);
> }
Yeah... I thought that i would have to implement something like
this... And wanted to avoid this...
So, yes, I think this is the more convincing way, but in my case
the --> toString --> toJson conversion is enough...
Thanks for help :)
More information about the Digitalmars-d-learn
mailing list