我有一个映射索引的对象和一个键-值对对象:
var obj = {0: {key: "{{0:$.data[?(@.first_name=="Janet")].last_name}}", value: "Janet"}}
在KV对中,其中可能包含JSONPath语言。显然,JSONPath可以包含双引号,即first_name=="Janet"
。
我需要JSON.stringify()
obj
。但是,这样做会导致结果字符串中包含\
个转义字符,这会进一步破坏JSONPath解析器。
stringify()
的结果:
"{"0":{"key":"{{0:$.data[?(@.first_name==\"Janet\")].last_name}}","value":"Janet"}}"
使用单引号first_name=='Janet'
可以解决此问题,但是出于可用性的考虑,我不希望我的用户引用JSONPath文档,请参阅""
是有效的,只是为了解决问题并告诉他们在我的应用程序中无效。
假设我必须对obj进行字符串化处理,并且可能存在合法的反斜杠字符(即first_name=="foo\baz"
),那么哪种方法都很好?
a。在字符串化之前对我的obj
进行消毒,以将双引号替换为单引号
b。在Stringify之后修正结果以摆脱\
C。用我没有想到的完全不同的方式解决这个问题