···
for (key, value) in json {
-
continue; // skip, because we've already handled it
match string_key_type_guess(key) {
-
DataModelType::Null => {
-
map.insert(key.to_smolstr(), Data::Null);
-
map.insert(key.to_smolstr(), Data::from_json(value));
-
DataModelType::Boolean => {
-
if let Some(value) = value.as_bool() {
-
map.insert(key.to_smolstr(), Data::Boolean(value));
-
map.insert(key.to_smolstr(), Data::from_json(value));
-
DataModelType::Integer => {
-
if let Some(int) = value.as_i64() {
-
map.insert(key.to_smolstr(), Data::Integer(int));
-
map.insert(key.to_smolstr(), Data::from_json(value));
-
DataModelType::Bytes => {
-
if let Some(value) = value.as_str() {
-
map.insert(key.to_smolstr(), decode_bytes(value));
-
map.insert(key.to_smolstr(), Data::from_json(value));
DataModelType::CidLink => {
if let Some(value) = value.as_object() {
···
map.insert(key.to_smolstr(), Data::from_json(value));
-
DataModelType::Blob => {
-
if let Some(value) = value.as_object() {
-
map.insert(key.to_smolstr(), Object::from_json(value));
-
map.insert(key.to_smolstr(), Data::from_json(value));
-
DataModelType::Array => {
-
if let Some(value) = value.as_array() {
-
map.insert(key.to_smolstr(), Data::Array(Array::from_json(value)));
-
map.insert(key.to_smolstr(), Data::from_json(value));
-
DataModelType::Object => {
-
if let Some(value) = value.as_object() {
-
map.insert(key.to_smolstr(), Object::from_json(value));
-
map.insert(key.to_smolstr(), Data::from_json(value));
-
DataModelType::String(string_type) => {
-
if let Some(value) = value.as_str() {
-
LexiconStringType::Datetime => {
-
if let Ok(datetime) = Datetime::from_str(value) {
-
Data::String(AtprotoStr::Datetime(datetime)),
-
Data::String(AtprotoStr::String(value.into())),
-
LexiconStringType::AtUri => {
-
if let Ok(value) = AtUri::new(value) {
-
Data::String(AtprotoStr::AtUri(value)),
-
Data::String(AtprotoStr::String(value.into())),
-
LexiconStringType::Did => {
-
if let Ok(value) = Did::new(value) {
-
Data::String(AtprotoStr::Did(value)),
-
Data::String(AtprotoStr::String(value.into())),
-
LexiconStringType::Handle => {
-
if let Ok(value) = Handle::new(value) {
-
Data::String(AtprotoStr::Handle(value)),
-
Data::String(AtprotoStr::String(value.into())),
-
LexiconStringType::AtIdentifier => {
-
if let Ok(value) = AtIdentifier::new(value) {
-
Data::String(AtprotoStr::AtIdentifier(value)),
-
Data::String(AtprotoStr::String(value.into())),
-
LexiconStringType::Nsid => {
-
if let Ok(value) = Nsid::new(value) {
-
Data::String(AtprotoStr::Nsid(value)),
-
Data::String(AtprotoStr::String(value.into())),
-
LexiconStringType::Cid => {
-
if let Ok(value) = Cid::new(value.as_bytes()) {
-
Data::String(AtprotoStr::Cid(value)),
-
Data::String(AtprotoStr::String(value.into())),
-
LexiconStringType::Language => {
-
if let Ok(value) = Language::new(value) {
-
Data::String(AtprotoStr::Language(value)),
-
Data::String(AtprotoStr::String(value.into())),
-
LexiconStringType::Tid => {
-
if let Ok(value) = Tid::new(value) {
-
Data::String(AtprotoStr::Tid(value)),
-
Data::String(AtprotoStr::String(value.into())),
-
LexiconStringType::RecordKey => {
-
if let Ok(value) = Rkey::new(value) {
-
Data::String(AtprotoStr::RecordKey(RecordKey::from(value))),
-
Data::String(AtprotoStr::String(value.into())),
-
LexiconStringType::Uri(_) => {
-
if let Ok(uri) = Uri::new(value) {
-
Data::String(AtprotoStr::Uri(uri)),
-
Data::String(AtprotoStr::String(value.into())),
-
LexiconStringType::String => {
-
map.insert(key.to_smolstr(), Data::String(parse_string(value)));
-
map.insert(key.to_smolstr(), Data::from_json(value));
···
for (key, value) in cbor {
-
continue; // skip, because we've already handled it
-
match string_key_type_guess(key) {
-
DataModelType::Null => {
-
if *value == Ipld::Null {
-
map.insert(key.to_smolstr(), Data::Null);
-
map.insert(key.to_smolstr(), Data::from_cbor(value));
-
DataModelType::Boolean => {
-
if let Ipld::Bool(value) = value {
-
map.insert(key.to_smolstr(), Data::Boolean(*value));
-
map.insert(key.to_smolstr(), Data::from_cbor(value));
-
DataModelType::Integer => {
-
if let Ipld::Integer(int) = value {
-
map.insert(key.to_smolstr(), Data::Integer(*int as i64));
-
map.insert(key.to_smolstr(), Data::from_cbor(value));
-
DataModelType::Bytes => {
-
if let Ipld::Bytes(value) = value {
-
map.insert(key.to_smolstr(), Data::Bytes(Bytes::copy_from_slice(value)));
-
map.insert(key.to_smolstr(), Data::from_cbor(value));
-
DataModelType::Blob => {
-
if let Ipld::Map(value) = value {
-
map.insert(key.to_smolstr(), Object::from_cbor(value));
-
map.insert(key.to_smolstr(), Data::from_cbor(value));
-
DataModelType::Array => {
-
if let Ipld::List(value) = value {
-
map.insert(key.to_smolstr(), Data::Array(Array::from_cbor(value)));
-
map.insert(key.to_smolstr(), Data::from_cbor(value));
-
DataModelType::Object => {
-
if let Ipld::Map(value) = value {
-
map.insert(key.to_smolstr(), Object::from_cbor(value));
-
map.insert(key.to_smolstr(), Data::from_cbor(value));
-
DataModelType::String(string_type) => {
-
if let Ipld::String(value) = value {
-
LexiconStringType::Datetime => {
-
if let Ok(datetime) = Datetime::from_str(value) {
-
Data::String(AtprotoStr::Datetime(datetime)),
-
Data::String(AtprotoStr::String(value.into())),
-
LexiconStringType::AtUri => {
-
if let Ok(value) = AtUri::new(value) {
-
Data::String(AtprotoStr::AtUri(value)),
-
Data::String(AtprotoStr::String(value.into())),
-
LexiconStringType::Did => {
-
if let Ok(value) = Did::new(value) {
-
Data::String(AtprotoStr::Did(value)),
-
Data::String(AtprotoStr::String(value.into())),
-
LexiconStringType::Handle => {
-
if let Ok(value) = Handle::new(value) {
-
Data::String(AtprotoStr::Handle(value)),
-
Data::String(AtprotoStr::String(value.into())),
-
LexiconStringType::AtIdentifier => {
-
if let Ok(value) = AtIdentifier::new(value) {
-
Data::String(AtprotoStr::AtIdentifier(value)),
-
Data::String(AtprotoStr::String(value.into())),
-
LexiconStringType::Nsid => {
-
if let Ok(value) = Nsid::new(value) {
-
Data::String(AtprotoStr::Nsid(value)),
-
Data::String(AtprotoStr::String(value.into())),
-
LexiconStringType::Cid => {
-
if let Ok(value) = Cid::new(value.as_bytes()) {
-
Data::String(AtprotoStr::Cid(value)),
-
Data::String(AtprotoStr::String(value.into())),
-
LexiconStringType::Language => {
-
if let Ok(value) = Language::new(value) {
-
Data::String(AtprotoStr::Language(value)),
-
Data::String(AtprotoStr::String(value.into())),
-
LexiconStringType::Tid => {
-
if let Ok(value) = Tid::new(value) {
-
Data::String(AtprotoStr::Tid(value)),
-
Data::String(AtprotoStr::String(value.into())),
-
LexiconStringType::RecordKey => {
-
if let Ok(value) = Rkey::new(value) {
-
Data::String(AtprotoStr::RecordKey(RecordKey::from(value))),
-
Data::String(AtprotoStr::String(value.into())),
-
LexiconStringType::Uri(_) => {
-
if let Ok(uri) = Uri::new(value) {
-
Data::String(AtprotoStr::Uri(uri)),
-
Data::String(AtprotoStr::String(value.into())),
-
LexiconStringType::String => {
-
map.insert(key.to_smolstr(), Data::String(parse_string(value)));
-
map.insert(key.to_smolstr(), Data::from_cbor(value));
map.insert(key.to_smolstr(), Data::from_cbor(value));
···
Data::Object(Object(map))