由于这对 JSON 字符串进行编码
{"def":"f:r","a":{"v":{"r":"005x0000001R9JRAA0"}},"t":1378328815840}
你可以做
function removeTimestamp(uriStr) {
// Decode the JSON encoded in the URI.
var jsonObj = JSON.parse(decodeURIComponent(uriStr));
// Remove the "t" property.
delete jsonObj['t'];
// Re-encode as a URI-encoded JSON string
return encodeURIComponent(JSON.stringify(jsonObj));
}
在您的输入字符串上,
var s = "%7B%22def%22%3A%22f%3Ar%22%2C%22a%22%3A%7B%22v%22%3A%7B%22r%22%3A%22005x0000001R9JRAA0%22%7D%7D%2C%22t%22%3A1378328815840%7D"
var sWithoutTimestamp = removeTimestamp(s);
alert(sWithoutTimestamp);
产生下面的第一行。我在时间戳部分放了一个空白,以便您可以轻松地将其与原始部分进行比较。
Modified: %7B%22def%22%3A%22f%3Ar%22%2C%22a%22%3A%7B%22v%22%3A%7B%22r%22%3A%22005x0000001R9JRAA0%22%7D%7D %7D
Original: %7B%22def%22%3A%22f%3Ar%22%2C%22a%22%3A%7B%22v%22%3A%7B%22r%22%3A%22005x0000001R9JRAA0%22%7D%7D%2C%22t%22%3A1378328815840%7D
JavaScript 不指定键迭代顺序,并且JSON.stringify
的输出取决于键迭代顺序,因此在某些解释器上,您可能会看到属性的重新排序,但它不应该影响输出的含义。
如果 URI 不是 UTF-8 编码并且包含非 ASCII 代码点,则此代码也可能会做一些奇怪的事情。