একটি জসন ফাইলে ডিকটি কীভাবে ফেলা যায়?


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
@ দানিশ জানেন না। আপনার সমস্যা সম্পর্কে ইতিমধ্যে এসও তে কোনও প্রশ্ন না থাকলে আপনার সমস্যাটি বর্ণনা করে আপনার একটি নতুন প্রশ্ন তৈরি করা উচিত। (বিটিডব্লিউ, আমি কেবল সেই পোস্টগুলির একটি সম্পাদক)
ফার্মি প্যারাডক্স

8
টিপ: আপনি যদি কোনও ফাইলে লিখতে না চান এবং কেবল আউটপুট দেখতে চান তবে এটিকে পুনর্নির্দেশের চেষ্টা করুন stdout: json.dump('SomeText', sys.stdout)
অরিন্দম রায়চৌধুরী

1
@ ড্যান-ইশ আপনি কি জসন.ডাম্প চেষ্টা করেছেন (নমুনা, এফপি, সাজানো_কিজ = মিথ্যা)? ধরে নিচ্ছি আমি আপনাকে বোঝাতে চাইছি
ক্রিস লারসন

3
এখানে মনে রাখার মতো ভাল বিষয়টি হ'ল আপনি যদি OrderedDict(অজগর> ২. use ) ব্যবহার না করেন তবে কোনও বিশেষ পদ্ধতিতে কীগুলি অর্ডার করার কোনও নিশ্চয়তা নেই
ফোর্ড প্রিফেক্ট

1
এটি "ডাম্পস" ছুঁড়েছে (1) স্থিতিযুক্ত যুক্তি নিয়েছে তবে 2 টি দেওয়া হয়েছে "ত্রুটি
বিজয় নির্মল

40

@ মিগিলসন এবং @ গিগাবলারের উত্তরটি একত্রিত করুন, আমি খুঁজে পেয়েছিলাম যে আমার যা প্রয়োজন তা হ'ল:


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- using-python /


16
print(j, file=f)পাইথনে ৩.6 (পরিবর্তে print >> f, j)
এমজক্রাউজ

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,, সাজানো_কিজ = সত্য) যদি সাজানো ক্রম পছন্দ হয়।
ক্রিস লারসন

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)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.