1

您好,我正在从事一个项目,我必须更新一个充满 JSON 数据的数据库。但是,此数据如下所示:

{\"Id\":\"1\",\"Sounding\":\"1.075\",\"Ullage\":\"0\",\"Full\":\"100\",\ "容量M\":\"3.918\",\"容量MT\":\"3.918\",\"LCG\":\"3.779\",\"TCG\":\"0\",\"VCG \":\"2.39\",\"FSM\":\"4.492\"}

但是,如果我将原始数据转换为 json 格式(来自 CSV 文件),它看起来像这样:

{"ID":1,"SOUNDING":1.075,"ULLAGE":0.000,"FULL":100.000,"CAPACITY":3.918,"CAPACITY":3.918,"LCG":3.779,"TCG":0.000," VCG":2.390,"FSM":0.000}

我如何像第一个一样添加所有这些斜杠,使其格式正确?我真的需要它们吗?

4

3 回答 3

1

看起来数据库中的字符串是 javascript(或 C- 或 Java-,您应该检查)字符串转义。最简单的方法是使用org.apache.commons.lang3.StringEscapeUtils.escapeEcmaScript()org.apache.commons.lang.StringEscapeUtils.escapeJavaScript()方法。还要检查这些类的其他方法。

替代方法是将第一个 JSON 作为字符串存储在第二个临时 JSON 对象中,然后将第二个 JSON 对象转换为字符串,然后从中获取仅包含第一个 JSON 对象的转义字符串值的子字符串(我认为这将是之间的部分第二个 JSON 字符串中的第三个和最后一个双引号...)。有点hacky,但避免添加额外的库。

于 2012-12-03T20:41:43.747 回答
0

如果我没有误解任何内容,我认为您可以使用json_parse.

这是一个例子:http: //jsfiddle.net/mqchen/yEJdq/

json_parse(data, function(key, value) {
    var floatVal = parseFloat(value);
    return !isNaN(floatVal) && isFinite(value) ? floatVal : value;
});

它使用 json_parse 但向它发送一个委托,该委托将看起来像数字的字符串解释为数字。

编辑:这是一个版本,它也将所有键转换为大写(如果你也想要的话):http: //jsfiddle.net/mqchen/yEJdq/2/

于 2012-12-03T19:26:41.057 回答
0

看起来数据已经针对某些编程语言的字符串/文本文字格式进行了转义。

于 2012-12-03T19:14:47.417 回答