【发布时间】:2023-12-20 04:49:01
【问题描述】:
我正在使用 rhino javascript 引擎来评估 json。 Json结构如下:
{"DataName":"111","Id":"222","Date":"2015-12-31T00:00:00","TextValue":"{\"Id\":\"1\",\"Name\":\"Daugherty\",\"ContactName\":\"May C\",\"ContactEmail\":\"may.c@gamil.com\",\"Total\":25,\"Phone\":\"111-111-1111\",\"Type\":\"Daily\",\"Notes\":[{\"Comments\":\"One\",\"Date\":\"2014-11-27T00:00:00.000\"},{\"Comments\":\"Two\",\"Date\":\"2014-11-28T00:00:00.000\"}],\"ImportComplete\":true,\"RunComplete\":true,\"CompleteDate\":\"2014-07-31T00:00:00.000\",\"Amount\":2400.00,\"ProcessingComplete\":true}","NumberValue":4444.5555,"DateValue":"2014-12-01T00:00:00"}
由于我使用的是 Rhino js 引擎,我不能使用 JSON.parse 和 JSON.stringify。 正如您所看到的,json 嵌入了 json,这个 json 我是从一个 .net web api 获得的,它放置了转义字符“\”。我正在尝试替换 javascript 中的转义字符,但没有帮助。
在 javascript 中有什么方法可以替换转义字符并使用“eval()”来评估 json。
这是我正在尝试的代码
var json = '{"DataName":"111","Id":"222","Date":"2015-12-31T00:00:00","TextValue":"{\"Id\ ":\"1\",\"姓名\":\"Daugherty\",\"ContactName\":\"May C\",\"ContactEmail\":\"may.c@gamil.com\" ,\"Total\":25,\"Phone\":\"111-111-1111\",\"Type\":\"Daily\",\"Notes\":[{\"Comments\" :\"一个\",\"日期\":\"2014-11-27T00:00:00.000\"},{\"评论\":\"两个\",\"日期\":\"2014 -11-28T00:00:00.000\"}],\"ImportComplete\":true,\"RunComplete\":true,\"CompleteDate\":\"2014-07-31T00:00:00.000\",\ "金额\":2400.00,\"ProcessingComplete\":true}","NumberValue":4444.5555,"DateValue":"2014-12-01T00:00:00"}';
var find = '\"';
var regex = new RegExp(find,'g');
var inj = json.replace(regex,'"');
var pl = eval('(' + inj +')');
【问题讨论】:
-
为什么要这样做?为什么不在外部 JSON 上使用
JSON.parse(),然后在内部 JSON 上再次使用它?不需要eval或替换转义字符...有吗? -
所以你可以使用JSON.parse,但是你选择使用eval?
-
你可以
JSON.parse整个字符串,然后一旦它是一个对象,你就可以解析较小的。 -
我的错,我已经编辑了帖子。我不能使用 JSON.parse 方法。
-
@RushikeshR:为什么不呢?你用的什么版本的 Rhino 不支持
JSON.parse?
标签: javascript json eval rhino