Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSON.stringify和JSON.parse得到不同的结果_Javascript_Json_Parsing - Fatal编程技术网

Javascript JSON.stringify和JSON.parse得到不同的结果

Javascript JSON.stringify和JSON.parse得到不同的结果,javascript,json,parsing,Javascript,Json,Parsing,我有一个对象,我使用JSON.stringify创建JSON字符串。 然后将该字符串保存到文件中。 然后我读了那个文件。创建JSON.parse并再次尝试使用该对象。 但它已经不起作用了。 例如,如果我使用[I]来选择元素,它不会选择元素,而只是将字符集作为字符串: 有人能帮忙吗 这是一个示例,但实际的JSON太长了: {"featureCollection": {"layers":"[ {\"layerDefinition\": {\"currentVersion\"

我有一个对象,我使用JSON.stringify创建JSON字符串。 然后将该字符串保存到文件中。 然后我读了那个文件。创建JSON.parse并再次尝试使用该对象。 但它已经不起作用了。 例如,如果我使用[I]来选择元素,它不会选择元素,而只是将字符集作为字符串:

有人能帮忙吗

这是一个示例,但实际的JSON太长了:

{"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,但它不起作用。但无论如何,非常感谢你!