कैसे एक जोंस फ़ाइल के लिए एक हुक डंप करने के लिए?


239

मेरे पास एक तानाशाही है:

sample = {'ObjectInterpolator': 1629,  'PointInterpolator': 1675, 'RectangleInterpolator': 2042}

मैं यह पता नहीं लगा सकता कि कैसे एक को डंप किया जाए json नीचे दी गई फ़ाइल के अनुसार :

{      
    "name": "interpolator",
    "children": [
      {"name": "ObjectInterpolator", "size": 1629},
      {"name": "PointInterpolator", "size": 1675},
      {"name": "RectangleInterpolator", "size": 2042}
     ]
}

क्या ऐसा करने का एक पैथोनिक तरीका है?

आप अनुमान लगा सकते हैं कि मैं एक d3त्रेमाप उत्पन्न करना चाहता हूं ।

जवाबों:


413
import json
with open('result.json', 'w') as fp:
    json.dump(sample, fp)

यह एक आसान तरीका है।

कोड की दूसरी पंक्ति में फ़ाइल result.jsonबनाता है और चर के रूप में खोला जाता है fp

तीसरी पंक्ति में आपका हुक्म sampleलिखा जाता है result.json!


1
@ पता नहीं। जब तक आपकी समस्या के बारे में पहले से ही एसओ पर कोई सवाल नहीं है, आपको अपने मुद्दे का वर्णन करते हुए एक नया प्रश्न बनाना चाहिए। (btw, im बस उन पदों के एक संपादक)
फर्मी विरोधाभास

8
युक्ति: यदि आप किसी फ़ाइल पर लिखना नहीं चाहते हैं, और केवल आउटपुट देखते हैं, तो उसे पुनः निर्देशित करने का प्रयास करें stdout: json.dump('SomeText', sys.stdout)
अरिंदम रॉयचौधरी

1
@ Dan-ish क्या आपने json.dump (नमूना, fp, Sort_keys = गलत) की कोशिश की है? मुझे यह समझते हुए कि आपका क्या मतलब है।
क्रिस लार्सन

3
यहाँ याद रखने वाली अच्छी बात यह है कि जब तक आप एक OrderedDict(python> 2.7) का उपयोग नहीं करते हैं, तब तक इस बात की कोई गारंटी नहीं है कि किसी विशेष तरीके से कुंजियों का आदेश दिया गया है
ford प्रीफेक्ट

1
यह "डंप्स () 1 स्थिति तर्क लेता है, लेकिन 2 को" त्रुटि दी गई
विजय निर्मल

40

@Mgilson और @gnibbler के उत्तर को मिलाएं, मैंने पाया कि मुझे इसकी क्या आवश्यकता थी:


d = {"name":"interpolator",
     "children":[{'name':key,"size":value} for key,value in sample.items()]}
j = json.dumps(d, indent=4)
f = open('sample.json', 'w')
print >> f, j
f.close()

यह इस तरह से, मुझे एक सुंदर-प्रिंट जसन फ़ाइल मिली। ट्रिक print >> f, jयहाँ से मिली है: http://www.anthonydebarros.com/2012/03/11/generate-json-from-sql-use-python/


16
print(j, file=f)पायथन में 3.6 (के बजाय print >> f, j)
mjkrause 15

print(j, file=f)मेरे लिए काम नहीं किया, मुझे जे भाग भी करने की आवश्यकता नहीं थी। d = {'a':1, 'b':2} print(d, file=open('sample.json', 'wt'))काम किया।
एचएस राठौर

21
d = {"name":"interpolator",
     "children":[{'name':key,"size":value} for key,value in sample.items()]}
json_string = json.dumps(d)

बेशक, यह संभावना नहीं है कि आदेश बिल्कुल संरक्षित होगा ... लेकिन यह केवल शब्दकोशों की प्रकृति है ...


6
json_string = json.dumps (d,, sort_keys = True) यदि सॉर्ट किया गया ऑर्डर वांछित है।
क्रिस लार्सन

13

इससे आपको एक शुरुआत मिलनी चाहिए

>>> import json
>>> print json.dumps([{'name': k, 'size': v} for k,v in sample.items()], indent=4)
[
    {
        "name": "PointInterpolator",
        "size": 1675
    },
    {
        "name": "ObjectInterpolator",
        "size": 1629
    },
    {
        "name": "RectangleInterpolator",
        "size": 2042
    }
]

1

सुंदर प्रिंट प्रारूप के साथ:

import json

with open(path_to_file, 'w') as file:
    json_string = json.dumps(sample, default=lambda o: o.__dict__, sort_keys=True, indent=2)
    file.write(json_string)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.