git std.json, use version=new_std_json for now

This commit is contained in:
Adam D. Ruppe 2013-12-02 12:30:05 -05:00
parent 88c19d7355
commit 18e5719db2
1 changed files with 57 additions and 20 deletions

77
jsvar.d
View File

@ -1115,43 +1115,73 @@ struct var {
JSONValue val; JSONValue val;
final switch(payloadType()) { final switch(payloadType()) {
case Type.Boolean: case Type.Boolean:
if(this._payload._boolean) version(new_std_json)
val.type = JSON_TYPE.TRUE; val = this._payload._boolean;
else else {
val.type = JSON_TYPE.FALSE; if(this._payload._boolean)
val.type = JSON_TYPE.TRUE;
else
val.type = JSON_TYPE.FALSE;
}
break; break;
case Type.Object: case Type.Object:
if(_payload._object is null) { version(new_std_json) {
val.type = JSON_TYPE.NULL; if(_payload._object is null) {
val = null;
} else {
JSONValue[string] tmp;
foreach(k, v; _payload._object._properties)
tmp[k] = v.toJsonValue();
val = tmp;
}
} else { } else {
val.type = JSON_TYPE.OBJECT; if(_payload._object is null) {
foreach(k, v; _payload._object._properties) val.type = JSON_TYPE.NULL;
val.object[k] = v.toJsonValue(); } else {
val.type = JSON_TYPE.OBJECT;
foreach(k, v; _payload._object._properties)
val.object[k] = v.toJsonValue();
}
} }
break; break;
case Type.String: case Type.String:
val.type = JSON_TYPE.STRING; version(new_std_json) { } else {
val.type = JSON_TYPE.STRING;
}
val.str = _payload._string; val.str = _payload._string;
break; break;
case Type.Integral: case Type.Integral:
val.type = JSON_TYPE.INTEGER; version(new_std_json) { } else {
val.type = JSON_TYPE.INTEGER;
}
val.integer = _payload._integral; val.integer = _payload._integral;
break; break;
case Type.Floating: case Type.Floating:
val.type = JSON_TYPE.FLOAT; version(new_std_json) { } else {
val.type = JSON_TYPE.FLOAT;
}
val.floating = _payload._floating; val.floating = _payload._floating;
break; break;
case Type.Array: case Type.Array:
val.type = JSON_TYPE.ARRAY;
auto a = _payload._array; auto a = _payload._array;
val.array.length = a.length; JSONValue[] tmp;
tmp.length = a.length;
foreach(i, v; a) { foreach(i, v; a) {
val.array[i] = v.toJsonValue(); tmp[i] = v.toJsonValue();
}
version(new_std_json) {
val = tmp;
} else {
val.type = JSON_TYPE.ARRAY;
val.array = tmp;
} }
break; break;
case Type.Function: case Type.Function:
val.type = JSON_TYPE.NULL; // ideally we would just skip it entirely... version(new_std_json)
val = null;
else
val.type = JSON_TYPE.NULL; // ideally we would just skip it entirely...
break; break;
} }
return val; return val;
@ -1304,9 +1334,16 @@ class PrototypeObject {
} }
JSONValue val; JSONValue val;
val.type = JSON_TYPE.OBJECT; version(new_std_json) {
foreach(k, v; this._properties) JSONValue[string] tmp;
val.object[k] = v.toJsonValue(); foreach(k, v; this._properties)
tmp[k] = v.toJsonValue();
val.object = tmp;
} else {
val.type = JSON_TYPE.OBJECT;
foreach(k, v; this._properties)
val.object[k] = v.toJsonValue();
}
return toJSON(&val); return toJSON(&val);
} }