ServiceStack.Text json 序列化器反序列化带括号的原始字符串为jsv
ServiceStack.Text json serializer deserializes raw string with brackets as jsv
我有一些 JSON 文本,我想将其反序列化为 Dictionary<string, object>
。 ServiceStack.Text 没问题,直到字符串值中有括号。然后它决定反序列化该字符串,就好像它是 JSV(ServiceStack 的格式,类似于 json 但没有引号)。
这是一个简化的 JSON 示例:
{
"prop1": "value1",
"prop2": "{tag} value2"
}
代码:
JsConfig.Init(new Config
{
ConvertObjectTypesIntoStringDictionary = true,
});
// json variable is a string, read from a file
var tree = JsonSerializer.DeserializeFromString<Dictionary<string, object>>(json);
这是我得到的损坏结果(以 json 形式返回):
{
"prop1": "value1",
"prop2": {
"tag}": "alue2"
}
}
只有当大括号紧跟在引号之后时才会出现这种情况。
Newtonsoft 序列化程序在这种情况下按预期工作,但如果我能找到解决方案或解决方法,我真的不想进行切换。
ServiceStack.Text 的 JSON 序列化程序主要用于将 JSON 反序列化为类型化的 POCO。
为了将 artibtrary JSON 反序列化为无类型集合,建议使用 JS Utils 代替,例如:
var obj = (Dictionary<string, object>)JSON.parse(json);
我有一些 JSON 文本,我想将其反序列化为 Dictionary<string, object>
。 ServiceStack.Text 没问题,直到字符串值中有括号。然后它决定反序列化该字符串,就好像它是 JSV(ServiceStack 的格式,类似于 json 但没有引号)。
这是一个简化的 JSON 示例:
{
"prop1": "value1",
"prop2": "{tag} value2"
}
代码:
JsConfig.Init(new Config
{
ConvertObjectTypesIntoStringDictionary = true,
});
// json variable is a string, read from a file
var tree = JsonSerializer.DeserializeFromString<Dictionary<string, object>>(json);
这是我得到的损坏结果(以 json 形式返回):
{
"prop1": "value1",
"prop2": {
"tag}": "alue2"
}
}
只有当大括号紧跟在引号之后时才会出现这种情况。
Newtonsoft 序列化程序在这种情况下按预期工作,但如果我能找到解决方案或解决方法,我真的不想进行切换。
ServiceStack.Text 的 JSON 序列化程序主要用于将 JSON 反序列化为类型化的 POCO。
为了将 artibtrary JSON 反序列化为无类型集合,建议使用 JS Utils 代替,例如:
var obj = (Dictionary<string, object>)JSON.parse(json);