24 lines
781 B
JavaScript
24 lines
781 B
JavaScript
export const LazyJsonString = function LazyJsonString(val) {
|
|
const str = Object.assign(new String(val), {
|
|
deserializeJSON() {
|
|
return JSON.parse(String(val));
|
|
},
|
|
toString() {
|
|
return String(val);
|
|
},
|
|
toJSON() {
|
|
return String(val);
|
|
},
|
|
});
|
|
return str;
|
|
};
|
|
LazyJsonString.from = (object) => {
|
|
if (object && typeof object === "object" && (object instanceof LazyJsonString || "deserializeJSON" in object)) {
|
|
return object;
|
|
}
|
|
else if (typeof object === "string" || Object.getPrototypeOf(object) === String.prototype) {
|
|
return LazyJsonString(String(object));
|
|
}
|
|
return LazyJsonString(JSON.stringify(object));
|
|
};
|
|
LazyJsonString.fromObject = LazyJsonString.from;
|