2012-06-20 22 views
6

में मैं निम्नलिखित JSON स्ट्रिंग (विकिपीडिया http://en.wikipedia.org/wiki/JSON से) हैडिकोडिंग json स्ट्रिंग अजगर

{ 
     "name":"Product", 
     "properties": 
     { 
       "id": 
       { 
         "type":"number", 
         "description":"Product identifier", 
         "required":true 
       }, 
       "name": 
       { 
         "type":"string", 
         "description":"Name of the product", 
         "required":true 
       }, 
       "price": 
       { 
         "type":"number", 
         "minimum":0, 
         "required":true 
       }, 
       "tags": 
       { 
         "type":"array", 
         "items": 
         { 
           "type":"string" 
         } 
       }, 
       "stock": 
       { 
         "type":"object", 
         "properties": 
         { 
           "warehouse": 
           { 
             "type":"number" 
           }, 
           "retail": 
           { 
             "type":"number" 
           } 
         } 
       } 
     } 
}  

मैं इस स्ट्रिंग अजगर json लाइब्रेरी का उपयोग कर डिकोड करने के लिए कोशिश कर रहा हूँ। मैं नोड

properties - > stock - > properties - > warehouse तक पहुंचना चाहता हूं।

मुझे लगता है कि json.loads() फ़ंक्शन एक शब्दकोश के रूप में जेसन स्ट्रिंग को संग्रहीत करता है। लेकिन इस मामले में गुण मेरी कुंजी है और उसके तहत सब कुछ मूल्य हैं। मैं उपरोक्त नोड तक कैसे पहुंच सकता हूं।

import json 
jsonText="" 
file = open("c:/dir/jsondec.json") 
for line in file.xreadlines(): 
    jsonText+=line 
data = json.loads(jsonText) 
for k,v in data.items(): 
    print k // shows name and properties 
file.close(); 

धन्यवाद

+0

क्या आप 'json.load() 'से अवगत हैं? – geoffspear

उत्तर

17

आप सीधे इस तरह फ़ाइल से json लोड कर सकते हैं:

f = open("c:/dir/jsondec.json") 
data = json.load(f) 

अपने इनपुट स्ट्रिंग के आधार पर, data अब एक शब्दकोश है कि अन्य शब्दकोशों होता है। आप बस इस तरह के शब्दकोशों को नेविगेट कर सकते हैं:

node = data['properties']['stock']['properties']['warehouse'] 
print str(node) 
+0

ओह मैं समझता हूँ। धन्यवाद .. फिर भार का उपयोग क्या है। मैं दस्तावेज़ पढ़ूंगा .. – Ank

+4

@ अंकुर कभी-कभी आपका जेसन एक फाइल से नहीं आएगा - वह तब होता है जब आप भार का उपयोग करते हैं। –

+0

धन्यवाद .. इस जेसन के लिए काम करता है लेकिन अन्य जेसन में मुझे टाइप एरर मिलता है: सूची सूचकांक पूर्णांक होना चाहिए, न कि str। क्या आप अनुमान लगा सकते हैं कि – Ank

संबंधित मुद्दे