当JSON字符串包含字符串和字符串数组时,JSON序列化程序出现问题
当Json字符串包含“key1:value1”时,可以将其转换为字典类型 但在我的例子中,它还包含一个字符串数组以及上面的key:value,即:当JSON字符串包含字符串和字符串数组时,JSON序列化程序出现问题,json,string,serialization,arraylist,Json,String,Serialization,Arraylist,当Json字符串包含“key1:value1”时,可以将其转换为字典类型 但在我的例子中,它还包含一个字符串数组以及上面的key:value,即: {k1:v1; "key2\":[{\"Key11\":{\"key21\":\"Val21\",\"key22\":\"val22\"}] (Json数据包含一些字符串和一些数组。) 当我使用Dictionary或Dictionary时——它在字符串值处失败——无法将字符串转换为字符串[],等等 仍然可以使用字典,但有没有更好的方法来处理这个问题
{k1:v1; "key2\":[{\"Key11\":{\"key21\":\"Val21\",\"key22\":\"val22\"}]
(Json数据包含一些字符串和一些数组。)
当我使用Dictionary或Dictionary时——它在字符串值处失败——无法将字符串转换为字符串[],等等
仍然可以使用字典,但有没有更好的方法来处理这个问题
谢谢
Phani如果您在编译时不知道JSON字符串的结构,那么就没有其他方法可以序列化JSON字符串——它必须是字典。但是,如果您使用的是C#4.0,则可以使用DynamicObject。由于动态类型将类型解析延迟到运行时,如果使用这种方法进行序列化,则可以将序列化对象视为强类型对象(尽管没有编译时支持)。这意味着您可以使用JSON样式的点表示法访问属性:
MyDynamicJsonObject.key2
要实现这一点,您可以从DynamicObject继承,并实现TryGetMember方法(:
如果您在编译时不知道JSON字符串的结构,那么就没有其他方法可以序列化JSON字符串——它必须是字典。但是,如果您使用的是C#4.0,则可以使用DynamicObject。由于动态类型将类型解析推迟到运行时,因此如果使用这种方法序列化,则可以将序列化对象视为trongly类型(尽管没有编译时支持)。这意味着您可以使用JSON样式的点表示法访问属性:
MyDynamicJsonObject.key2
要实现这一点,您可以从DynamicObject继承,并实现TryGetMember方法(:
您的示例不是有效的JSON,例如,每个键和值都应该被
“
包围,例如{“k1”:“v1”}
,开头和结尾的花括号的数量必须匹配,如果您使用\
转义”
字符,则必须添加另一个“
字符,例如“key2\”
使用诸如之类的工具来验证JSON是否正确。您的示例不是有效的JSON,例如,每个键和值都应该用
“
包围,例如{“k1”:“v1”}
,如果使用转义”
字符,则打开和关闭的花括号的数量必须匹配
您必须添加另一个“
字符,例如“key2\”
使用诸如验证您的JSON是否正确的工具。它是您所写的固定结构,还是您正在寻找一个通用解决方案?通用解决方案,假设我们不知道这些结构…它是您所写的固定结构,还是您正在寻找一个通用解决方案?通用解决方案,假设我们不知道str结构。。。
MyDynamicJsonObject.key2.Item(0)