2015-05-01 54 views
2

我有一个对象我使用JSON.stringify来创建JSON字符串。 比我将该字符串保存到文件。 然后我读了那个文件。制作JSON.parse并尝试再次使用该对象。 但它不工作了。 例如,如果我使用[I]选择元素它不选择元素,但只取字符集就像它的字符串:(JSON.stringify和JSON.parse得到不同的结果

任何机构可以帮助与?

这是某种形式的例子,但实际工作中的JSON是TOOOO长:

{"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} 
                } 
               }, 
+0

你可以发布JSON字符串吗?或至少有一部分? –

+0

我在问题中添加了 –

+0

解决方案:仅对数据结构的* root *进行字符串化。 –

回答

0

看起来好像当您尝试解析被写入JSON字符串到文件的过程中逃逸,这是造成问题的行情您可能需要逃逸停止进程引号,或者使用replace在p之前去掉JSON字符串的转义引号分配到parse

+0

将JSON写入文件时不会发生这种情况。请注意,前两行不会被转义。 – Barmar

+0

好眼睛,没有抓住那个。 –

4

这是怎么回事featureCollection属性的layers属性不是一个数组,它是一个数组的JSON编码。您需要再次解码才能处理内容。假设json_obj是完整的对象,你需要做的:

var layers = JSON.parse(json_obj.featureCollection.layers); 

然后你就可以访问layers[i].layerDefinition.currentDefinition

我不知道为什么这样做 - 您可能需要修复创建JSON的代码,并删除在存储到layers属性时调用JSON.stringify()的部分。

+0

谢谢!是的,这件事对我有用。首先我试图替换逃逸字符集,但它没有奏效。但无论如何非常感谢你! –

相关问题