簡體   English   中英

使用GSON解析JS(帶有函數)

[英]parsing JS (with functions) using GSON

我有一堆包含Javascript的文件,這些文件存儲配置元數據,我想使用GSON(2.2.4)將它們解析為Java對象,以供應用程序讀取。 這適用於簡單的名稱/值對,但是如果我的JS文件具有功能,則GSON當然會引發異常:

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

    },  ...

com.google.gson.stream.MalformedJsonException: Expected ':' at line 4 column 38

我想知道是否有辦法讓GSON解析這種類型的JS文件,即使它必須完全忽略函數並僅解析簡單的名稱/值對也是如此? 我想我需要對輸入進行一些預處理?

從技術上講,函數不是規范中 JSON格式表示的數據類型,而是:

string number object array true falsenull

實際上,許多JSON解析器在序列化JSON對象時會忽略函數,例如許多瀏覽器實現的Javascript版本:

如果未定義,則在轉換期間遇到函數或XML值時,將忽略它(在對象中找到它)或將其檢查為空(在數組中找到它)。

因此,我不知道您是如何接收JSON的,但是正確地對其進行序列化是最好的解決方案,並且如果可以的話,它通常是最簡單的。

如果您無法控制要接收的JSON ,則GSON允許您定義自定義反序列化器 ,這應該使您能夠實際解析出您擁有的JSON,而不會引發異常。 顯然,這將需要少量工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM