2015-05-16 58 views
1

這是一個非常具體的要求,爲此,我很抱歉,但我在爲一個JavaScript項目我對我的工作怎麼辦..解析JavaScript來JSON使用Python 3

損失要能夠與蟒蛇解析JavaScript和我發現這implementation`port原來水仙稱爲pynarcissus的:

https://github.com/jtolds/pynarcissus

對我來說,問題是埋在Python類結構的信息..東西與我我只是模糊地主管..我想輸出在JSON

我試圖挖掘數據,但每次JSON無效

我的問題是你將如何去做這樣的事情?我會很感激的任何細節,因爲該項目包含不同類型的嵌套類創建的內容似乎是一個完全獨特的問題

這裏是我的嘗試:

  • 我採取了返回值解析()和創建了一個通過類結構繼承的函數,它返回基於類型的值:'str','int','bool','NoneType','list','dict','main.Node','main.Tokenizer ','main.Object';但返回的對象缺少類中的一些屬性,即'類型',同時保留其他類似'type_',同樣tokenizer始終包含相同的值

  • 我將程序打印的str函數的輸出stdout,刪除清除和複製函數和標記器:[對象對象],然後嘗試在必要時手動添加雙引號,以使輸出成爲有效的JSON對象。這裏有一些問題,首先忽略標記器對象似乎是我錯過了重要的信息,另一個問題是,有時有「價值」:「{」有時候存在「價值」:{..},完成工作後JSON無效

  • 假設問題在於「價值」:{。 。}問題我解決了添加一個與str函數完全相同的新函數,但不是打印%s值,而是在必要時打印「%s」。現在,我可以區分「value」:「{」和「價值」:「{..}」但我將不得不通過手動刪除對象周圍的引號..在這樣做後,JSON無效

  • 我試過每個copy'pasta解決方案的python類從JSON棧,但類的嵌套方面以及不斷變化的類型增加了複雜性。一些屬性缺乏一個。 字典即使類型是「一流的‘字典’」所以one'method'fits'all拉姆達解決方案未能

回答

0

爲後人: 一次我按摩pynarcissus的代碼打印JSON我發現,該過程失敗嵌套函數..歡快的確切原因我在另一個線程(一)加強從我的自制方法

遠@firstfire建議esprima和pyesprima

,所以我進去看了esprima建議,有點2to3`ing和售後服務更多工作返回有效的JSON我得到它的工作,至今它完全符合我的需要

檢查出來的問題,拉請求,叉:

問題:https://github.com/int3/pyesprima/issues/1

PR: https://github.com/int3/pyesprima/pull/2

叉:https://github.com/ghissues/pyesprima

(I)http://www.linuxquestions.org/questi....php?p=5364199

老答案::

關閉了該問題,並增加了拉請求

https://github.com/jtolds/pynarcissus/issues/6

你可以檢查出叉,如果你通過尋找一種方法來解析JavaScript到jso這裏n in python 3

https://github.com/ghissues/pynarcissus