Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.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 使用GSON解析JS(带函数)_Javascript_Gson - Fatal编程技术网

Javascript 使用GSON解析JS(带函数)

Javascript 使用GSON解析JS(带函数),javascript,gson,Javascript,Gson,我有一堆包含Javascript的文件,这些文件存储配置元数据,我想使用GSON(2.2.4)将它们解析为Java对象,供我的应用程序读取。 这适用于简单的名称/值对,但是如果我的JS文件有一个函数,那么GSON当然会抛出一个异常: [ { text:'Cost', renderer:function(value) { return 0; } }, ... com.google.

我有一堆包含Javascript的文件,这些文件存储配置元数据,我想使用GSON(2.2.4)将它们解析为Java对象,供我的应用程序读取。 这适用于简单的名称/值对,但是如果我的JS文件有一个函数,那么GSON当然会抛出一个异常:

[
    {
        text:'Cost',
        renderer:function(value)
        { 
           return 0; 
        }   

    },  ...
com.google.gson.stream.MalformedJSON异常:第4行第38列应为“:”

我想知道是否有办法让GSON解析这种类型的JS文件,即使它必须完全忽略函数,只解析简单的名称/值对?
我想我需要对输入进行一些预处理?

从技术上讲,函数不是由中的JSON格式表示的数据类型,而是:

字符串
数字
对象
数组

实际上,许多JSON解析器在序列化JSON对象时会忽略函数,如Javascript版本:

如果在转换过程中遇到未定义的函数或XML值,则会将其忽略(在对象中找到时)或删除为null(在数组中找到时)

因此,我不知道您是如何接收JSON的,但是正确地序列化它是最好的解决方案,如果可以的话,这通常是最简单的


如果您无法控制正在接收的JSON,那么GSON为您提供了一种可能性,这将使您能够正确地解析您拥有的JSON,而不会引发异常。但这显然需要少量的工作。

从技术上讲,函数不是一种数据类型,它不是由中的JSON格式表示的,而是:

字符串
数字
对象
数组

实际上,许多JSON解析器在序列化JSON对象时会忽略函数,如Javascript版本:

如果在转换过程中遇到未定义的函数或XML值,则会将其忽略(在对象中找到时)或删除为null(在数组中找到时)

因此,我不知道您是如何接收JSON的,但是正确地序列化它是最好的解决方案,如果可以的话,这通常是最简单的


如果您无法控制正在接收的JSON,那么GSON为您提供了一种可能性,这将使您能够正确地解析您拥有的JSON,而不会引发异常。但显然,这需要做一点工作。

我只是在读有关它的文章,但它只是一个用于Java的JSON库,对吗?JSON本身不支持函数作为键的值。你发布的不是JSON,那么为什么你认为JSON库应该能够解析它呢;我知道这是Javascript而不是JSON。然而,GSON能够解析属性——我所需要的只是忽略函数,而不是抛出解析错误Felix Kling的评论被否决了,尽管忽略了原始问题的细节,这一事实对网站来说是一种耻辱我只是在读它,但它只是Java的JSON库,对吗?JSON本身不支持函数作为键的值。你发布的不是JSON,那么为什么你认为JSON库应该能够解析它呢;我知道这是Javascript而不是JSON。然而,GSON能够解析属性——我所需要的只是忽略函数,而不是抛出解析错误Felix Kling的评论被否决,尽管忽略了原始问题的细节,这一事实对网站来说是一种耻辱