servicestack-text,C#,Json,servicestack Text" /> servicestack-text,C#,Json,servicestack Text" />

C# 文本json序列化程序将带有括号的原始字符串反序列化为jsv

C# 文本json序列化程序将带有括号的原始字符串反序列化为jsv,c#,json,servicestack-text,C#,Json,servicestack Text,我有一些JSON文本,我想将其反序列化到字典中。Text这样做没有问题,直到字符串值中有括号为止。然后它决定反序列化该字符串,就好像它是JSV(ServiceStack的格式,类似于json,但没有引号) 下面是一个简化的JSON示例: { “prop1”:“value1”, prop2:“{tag}value2” } 以及守则: JsConfig.Init(新配置 { ConvertObjectTypesIntostingDictionary=true, }); //json变量是一个字符串

我有一些JSON文本,我想将其反序列化到
字典中。Text这样做没有问题,直到字符串值中有括号为止。然后它决定反序列化该字符串,就好像它是JSV(ServiceStack的格式,类似于json,但没有引号)

下面是一个简化的JSON示例:

{
“prop1”:“value1”,
prop2:“{tag}value2”
}
以及守则:

JsConfig.Init(新配置
{
ConvertObjectTypesIntostingDictionary=true,
});
//json变量是一个字符串,从文件中读取
var tree=JsonSerializer.DeserializeFromString(json);
这是我得到的损坏结果(返回json格式):

{
“prop1”:“value1”,
“建议2”:{
“tag}”:“alue2”
}
}
只有当曲括号直接位于引号后时,才会发生这种情况


Newtonsoft serializer在本例中按预期工作,但如果我能找到解决方案或解决方法,我真的不想进行切换。

ServiceStack.Text的JSON序列化程序主要用于将JSON反序列化为类型化POCO

要将artibtrary JSON反序列化为非类型集合,建议改用,例如:

var obj = (Dictionary<string, object>)JSON.parse(json);
var obj=(字典)JSON.parse(JSON);

感谢您的回复,但是添加
ServiceStack.Common
只是单个任务的另一个依赖项。我仍然需要
ServiceStack.Text
serializer的一些高级功能
ServiceStack.Text
显然能够反序列化为非类型集合(至少在本例中是这样),如果不是因为这个怪癖的话。@RokiPodpecan它是解析未知JSON的首选API,保留JSON数据类型,而
ConvertObjectTypesIntoStringDictionary
将值强制转换为字符串字典,如图所示。我刚刚在现在最新的v5.10.5中解决了这个问题。