2017-10-20 88 views
0

我想解析一个对象,如下所示,其中一个字符串有一些特殊字符与它相关并且面临一些错误。Javascript反序列化器不能用于特殊字符

obj= JsonConvert.DeserializeObject<response>(request.Message) 

输入字符串中的一个看起来像下面

"Message":"{ 
    'Id':'text me on dec may\' 17', 
}" 

错误详细信息:1.路径 'ID',第4行,位置56:解析是 遇到意外的字符的值后

由于事先

+0

我敢肯定JSON只与有效双引号 - 尝试替换单引号。 – arthurakay

+0

[将字符串解析为带有单引号的JSON?]可能的重复?(https://stackoverflow.com/questions/36038454/parsing-string-as-json-with-single-quotes ) – arthurakay

+0

arthurakay,我只有在字符串内部遇到特殊字符时才会面临问题,否则反序列化工作作为perferct,替换单引号将是一个代价高昂的操作ryt,因为我工作的很大数据的装载。是否有任何设置/配置级别更改可以用来接受特殊字符。 –

回答

0

我发现这个问题,实际上它是输入问题,在数据序列化输入之后应该为每个特殊字符添加2个反斜杠,就像在API方法中捕获数据时一样,反斜杠之一将在数据分配(获取/设置)的属性。如果两个斜杠有一个将删除,另一个将用于deserailise数据。

消息 “:”{ 'ID': '给我发短信12月可以\' 17' , }”

感谢所有支持你

0

在米y先前的评论,我错误地读了最初的问题。对于那个很抱歉。

在JavaScript中我可以这样做:

JSON.parse('{"Message":"{\'Id\':\'text me on dec may\' 17\',}"}') 

这工作得很好。请注意,我还必须逃避围绕内部字符串的单引号。

+0

之前正确地追加了反斜杠在我的情景中,我正在使用一个外部服务,它将在上面的消息中发送上面具有大约50个字段(如ID)的json,所以我无法修改消息,只是消耗了外部服务的触发器,并通过使用具有全部50个属性的类对数据进行脱密处理,并推送到数据库,是否有任何其他方式来纠正问题。非常感谢您的快速回复 –