MCPcopy Create free account
hub / github.com/Snapchat/Valdi / writeValueToJSONWriter

Function writeValueToJSONWriter

valdi_core/src/valdi_core/cpp/Utils/ValueUtils.cpp:99–166  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

97}
98
99void writeValueToJSONWriter(const Value& value, JSONWriter& writer) {
100 switch (value.getType()) {
101 case ValueType::Null:
102 case ValueType::Undefined:
103 writer.writeNull();
104 break;
105 case ValueType::InternedString:
106 writer.writeString(value.toStringBox().toStringView());
107 break;
108 case ValueType::StaticString: {
109 auto utf8Storage = value.getStaticString()->utf8Storage();
110 writer.writeString(utf8Storage.toStringView());
111 } break;
112 case ValueType::Error:
113 writer.writeString(value.toStringBox().toStringView());
114 break;
115 case ValueType::TypedObject:
116 return writeTypedObjectToJSONWriter(*value.getTypedObject(), writer);
117 case ValueType::ProxyTypedObject:
118 return writeTypedObjectToJSONWriter(*value.getProxyObject()->getTypedObject(), writer);
119 case ValueType::ValdiObject: {
120 auto* valueConvertible = dynamic_cast<ValueConvertible*>(value.getValdiObject().get());
121 if (valueConvertible != nullptr) {
122 return writeValueToJSONWriter(valueConvertible->toValue(), writer);
123 } else {
124 writer.writeString(value.toStringBox().toStringView());
125 }
126 } break;
127 case ValueType::Function:
128 writer.writeString(value.toStringBox().toStringView());
129 break;
130 case ValueType::Int:
131 case ValueType::Long:
132 writer.writeInt(value.toLong());
133 break;
134 case ValueType::Double:
135 writer.writeDouble(value.toDouble());
136 break;
137 case ValueType::Bool:
138 writer.writeBool(value.toBool());
139 break;
140 case ValueType::Map: {
141 writer.writeBeginObject();
142
143 auto isFirst = true;
144 for (const auto& it : *value.getMap()) {
145 if (!isFirst) {
146 writer.writeComma();
147 }
148 isFirst = false;
149 writer.writeProperty(it.first.toStringView());
150 writeValueToJSONWriter(it.second, writer);
151 }
152
153 writer.writeEndObject();
154 } break;
155 case ValueType::Array: {
156 writer.writeArray(*value.getArray(), [&](const auto& item) { writeValueToJSONWriter(item, writer); });

Callers 2

valueToJsonFunction · 0.85

Calls 15

binaryToBase64Function · 0.85
writeNullMethod · 0.80
utf8StorageMethod · 0.80
writeIntMethod · 0.80
toLongMethod · 0.80
writeDoubleMethod · 0.80
writeBeginObjectMethod · 0.80
writeCommaMethod · 0.80
writePropertyMethod · 0.80
writeEndObjectMethod · 0.80
writeArrayMethod · 0.80

Tested by

no test coverage detected