2012-05-17 117 views
1

我有以下的PHP字符串:複雜的字符串解析問題

「{ '嗒嗒':1178, '胡說':0, '胡說':260, '胡說':0, 'needWrapper':

{ '需要': 'TEXTNEED', '需要': 'TEXTNEED'}, '胡說': '胡說'}」

編輯:我把它弄壞了,希望能夠使它更具可讀性

我需要從中得到「NEED:TEXTNEED」和「NEED:TEXTNEED」子字符串。我覺得使用正則表達式或使用爆炸式或其他方法可以做到這一點,但我無法將優雅/工作解決方案拼湊在一起。任何幫助,將不勝感激。

+2

都是'NEED's相同的字符串?否則,這是完美的JSON。 (好吧,也許除了引號外 - jdi就在那裏) – Kobi

+0

這看起來像一個JSON字符串。你正在使用哪種編程語言/腳本?也許你可以使用與你的語言兼容的JSON API來解析上述內容。 – Kshitij

+0

這是一個PHP字符串,我如何在PHP中使用JSON解析? – sfgiants2010

回答

3

如果換成單引號用雙引號,可以用JSON解析:

import json 

s = "{'blah':1178,'blah':0,'blah':260,'blah':0,'needWrapper':{'NEED':'TEXTNEED','NEED':'TEXTNEED'}, 'blah':'blah'}" 

print json.loads(s.replace("'", '"')) 
# {u'blah': u'blah', u'needWrapper': {u'NEED': u'TEXTNEED'}} 

現在,你可以訪問的對象。

如果源從PHP來了,它應該能夠產生有效的JSON用雙引號的對象: http://www.php.net/manual/en/function.json-encode.php

+0

+1使用現有的車輪。 –

+0

當然,如果字符串中有雙引號:'{'a':'「Hello」'}',這會失敗。如果兩個鍵都相同(你只有一個是結果),它也不應該工作,儘管OP可能只是一個不好的例子。 – Kobi

+0

@Kobi:它必須是一個不好的例子,因爲沒有重複鍵的理由。這是OP的一個非常有限的例子,所以我所能做的就是解決他提供的問題。 – jdi