Javascript JSON.stringify和JSON.parse得到不同的结果
我有一个对象,我使用JSON.stringify创建JSON字符串。 然后将该字符串保存到文件中。 然后我读了那个文件。创建JSON.parse并再次尝试使用该对象。 但它已经不起作用了。 例如,如果我使用[I]来选择元素,它不会选择元素,而只是将字符集作为字符串: 有人能帮忙吗 这是一个示例,但实际的JSON太长了:Javascript JSON.stringify和JSON.parse得到不同的结果,javascript,json,parsing,Javascript,Json,Parsing,我有一个对象,我使用JSON.stringify创建JSON字符串。 然后将该字符串保存到文件中。 然后我读了那个文件。创建JSON.parse并再次尝试使用该对象。 但它已经不起作用了。 例如,如果我使用[I]来选择元素,它不会选择元素,而只是将字符集作为字符串: 有人能帮忙吗 这是一个示例,但实际的JSON太长了: {"featureCollection": {"layers":"[ {\"layerDefinition\": {\"currentVersion\"
{"featureCollection":
{"layers":"[
{\"layerDefinition\":
{\"currentVersion\": 10.3,
\"id\": 0,
\"supportsCoordinatesQuantization\": true,
\"advancedQueryCapabilities\":
{
\"supportsPagination\": true,
\"supportsDistinct\": true
},
\"geometryType\":
\"esriGeometryPolygon\", \"minScale\": 0,
\"maxScale\": 0,
\"extent\":
{},
\"drawingInfo\":
{\"renderer\":
{\"type\": \"simple\", \"symbol\":
{\"type\": \"esriSFS\", \"style\": \"esriSFSSolid\", \"color\": [76, 129, 205, 191], \"outline\":
{\"type\": \"esriSLS\", \"style\": \"esriSLSSolid\", \"color\": [0, 0, 0, 255], \"width\": 0.75}
}
},
似乎将JSON字符串写入文件的过程正在转义引号,这在您尝试解析时会导致问题。您需要停止转义引号的过程,或者在将JSON字符串传递到解析之前使用replace去掉转义引号。发生的情况是featureCollection属性的layers属性不是数组,而是数组的JSON编码。您需要再次解码以处理内容。假设json_obj是完整对象,您需要执行以下操作:
var layers = JSON.parse(json_obj.featureCollection.layers);
然后可以访问图层[i].layerDefinition.currentDefinition
我不知道为什么会这样做-您可能希望首先修复创建JSON的代码,并删除在存储到layers属性时调用JSON.stringify的部分。可以发布JSON字符串吗?或者至少是其中的一部分?我在一个问题解决方案中添加了:只对数据结构的根进行字符串化。在将JSON写入文件时不会发生这种情况。请注意,前两行没有漏掉。好眼力,没听清楚。谢谢!是的,这东西对我有用。首先,我试图替换escape charset,但它不起作用。但无论如何,非常感谢你!