XML को JSON में परिवर्तित करके पायथन का उपयोग कर रहे हैं?


170

मैंने वेब पर ungainly XML-> JSON कोड का एक उचित हिस्सा देखा है, और स्टैक के उपयोगकर्ताओं के साथ थोड़ी बातचीत की है, मुझे विश्वास है कि यह भीड़ Google परिणामों के पहले कुछ पृष्ठों से अधिक मदद कर सकती है।

इसलिए, हम एक मौसम फ़ीड पार्स कर रहे हैं, और हमें वेब साइटों की एक भीड़ पर मौसम विजेट्स को आबाद करने की आवश्यकता है। हम अब पायथन-आधारित समाधानों में देख रहे हैं।

यह सार्वजनिक weather.com RSS फ़ीड एक अच्छा उदाहरण है कि हम क्या पार्स कर रहे हैं ( हमारी वास्तविक weather.com फ़ीड में साझेदारी w / के कारण अतिरिक्त जानकारी है )।

संक्षेप में, हमें पायथन का उपयोग करके XML को JSON में कैसे बदलना चाहिए?

जवाबों:


61

तो दूसरे के लिए एक परिवर्तित जरूरी है कि तुम क्या करना चाहते हैं में से कुछ समझने की आवश्यकता है वहाँ, नहीं "एक-से-एक" XML और JSON के बीच मानचित्रण है कर परिणाम के साथ।

कहा जा रहा है कि, पायथन की मानक लाइब्रेरी में XML (DOM, SAX, और ElementTree सहित) पार्स करने के लिए कई मॉड्यूल हैं । पाइथन 2.6 के रूप में, JSON से पायथन डेटा संरचनाओं को परिवर्तित करने के लिए समर्थन jsonमॉड्यूल में शामिल है ।

तो बुनियादी ढांचा है।


2
xmljson IMHO बॉक्स से बाहर विभिन्न सम्मेलनों के लिए समर्थन के साथ उपयोग करने के लिए सबसे तेज है। pypi.org/project/xmljson
nitinr708

नए उत्तरों में इसका उल्लेख पहले ही किया जा चुका है। यह अभी भी वैध XML निर्माणों के एक छोटे से उपसमूह को कवर करता है, लेकिन संभवतः अधिकांश लोग जो व्यवहार में उपयोग करते हैं।
डैन लेन्स्की

281

xmltodict (पूर्ण प्रकटीकरण: मैंने इसे लिखा था) आपको इस "मानक" का पालन ​​करते हुए अपने XML को एक तानाशाह + सूची + स्ट्रिंग संरचना में बदलने में मदद कर सकता है । यह एक्सपटेड है , इसलिए यह बहुत तेज है और पूरे XML ट्री को मेमोरी में लोड करने की आवश्यकता नहीं है।

एक बार जब आपके पास वह डेटा संरचना होती है, तो आप इसे JSON पर अनुक्रमित कर सकते हैं:

import xmltodict, json

o = xmltodict.parse('<e> <a>text</a> <a>text</a> </e>')
json.dumps(o) # '{"e": {"a": ["text", "text"]}}'

अगर मैं अपने django मॉडल फ़ाइल से एक json फ़ाइल बनाता हूं। आवश्यक फ़ील्ड के लिए xml को json में बदलने के लिए मैं अपनी xml फ़ाइल कैसे मैप कर सकता हूं?
14:02

1
@ मुझे लगता है कि आपको इसे एक अलग SO प्रश्न के रूप में पोस्ट करना चाहिए।
मार्टिन ब्लेक

@ मर्टिन ब्लीच। मैंने एक सवाल जोड़ा, लेकिन यह एसओ में फिट होने के लिए बहुत कठिन है, मैं एक शुरुआती हूं, इसलिए मैंने जितनी जानकारी दी है, उतनी ही प्रदान की है, लेकिन मुझे उम्मीद है कि आपको अधिक स्पष्टता stackoverflow.com/q/23676973/461887 की
Sayth

इतने लंबे समय के बाद, मैं थोड़ा हैरान हूं कि कुछ लिनक्स वितरण में xmltodict "मानक" पुस्तकालय नहीं है। यह ठीक है कि हम जो भी पढ़ सकते हैं, उससे सीधे काम कर रहे हैं, मैं दुर्भाग्य से xslt रूपांतरण जैसे एक और समाधान का उपयोग
करूंगा

इस शानदार पुस्तकालय को लिखने के लिए एक टन धन्यवाद। हालाँकि, bs4यह करने के लिए पुस्तकालय का उपयोग करने के लिए xml का काम करना बहुत आसान है
Tessaracter

24

आप XML XML JSON सम्मेलनों का उपयोग करके परिवर्तित करने के लिए xmljson लाइब्रेरी का उपयोग कर सकते हैं ।

उदाहरण के लिए, यह XML:

<p id="1">text</p>

इसमें BadgerFish सम्मेलन के माध्यम से अनुवाद :

{
  'p': {
    '@id': 1,
    '$': 'text'
  }
}

और इस में GData सम्मेलन के माध्यम से (विशेषताएँ समर्थित नहीं हैं):

{
  'p': {
    '$t': 'text'
  }
}

... और पार्कर सम्मेलन के माध्यम से इसमें (विशेषताएं समर्थित नहीं हैं):

{
  'p': 'text'
}

एक ही सम्मेलनों का उपयोग करके XML से JSON और JSON से XML में परिवर्तित करना संभव है:

>>> import json, xmljson
>>> from lxml.etree import fromstring, tostring
>>> xml = fromstring('<p id="1">text</p>')
>>> json.dumps(xmljson.badgerfish.data(xml))
'{"p": {"@id": 1, "$": "text"}}'
>>> xmljson.parker.etree({'ul': {'li': [1, 2]}})
# Creates [<ul><li>1</li><li>2</li></ul>]

प्रकटीकरण: मैंने यह पुस्तकालय लिखा था। आशा है कि यह भविष्य के खोजकर्ताओं की मदद करता है।


4
यह एक बहुत अच्छा पुस्तकालय है, लेकिन कृपया पढ़ें निजी ओपन-सोर्स लाइब्रेरी की पेशकश कैसे ? इससे पहले कि आप इसे दिखाते हुए अधिक उत्तर पोस्ट करें।
मार्टिन पीटर्स

1
धन्यवाद @MartijnPieters - मैं अभी इसके माध्यम से गया हूं और यह सुनिश्चित करूंगा कि मैं इस पर टिक जाऊं।
एस आनंद

1
समाधान के लिए धन्यवाद आनंद - यह अच्छी तरह से काम करता है, बाहरी निर्भरता नहीं है, और विभिन्न सम्मेलनों का उपयोग करके विशेषताओं को कैसे नियंत्रित किया जाता है, इसमें बहुत लचीलापन प्रदान करता है। वास्तव में जो मुझे चाहिए था और मुझे मिला सबसे लचीला और सरल उपाय था।
mbbeme

धन्यवाद आनंद - दुर्भाग्य से, मैं XML को utf8 एन्कोडिंग के साथ पार्स करने के लिए नहीं मिल सकता। सूत्रों के अनुसार, ऐसा लगता है कि XMLParser (..) के साथ एन्कोडिंग सेट को अनदेखा किया गया है
पैट्रिक बेक

@PatrikBeck क्या आप XML के एक छोटे से उदाहरण को utf8 एन्कोडिंग से तोड़ सकते हैं?
एस आनंद

11

अगर कुछ समय आपको ही मिलता है सभी डेटा के बजाय प्रतिक्रिया कोड तो json parse जैसी त्रुटि होगी तो इसे पाठ में रूपांतरित करने की आवश्यकता होगी

import xmltodict

data = requests.get(url)
xpars = xmltodict.parse(data.text)
json = json.dumps(xpars)
print json 

7

यहाँ पर मैंने जो कोड बनाया है। सामग्री का कोई पार्सिंग नहीं है, बस सादा रूपांतरण है।

from xml.dom import minidom
import simplejson as json
def parse_element(element):
    dict_data = dict()
    if element.nodeType == element.TEXT_NODE:
        dict_data['data'] = element.data
    if element.nodeType not in [element.TEXT_NODE, element.DOCUMENT_NODE, 
                                element.DOCUMENT_TYPE_NODE]:
        for item in element.attributes.items():
            dict_data[item[0]] = item[1]
    if element.nodeType not in [element.TEXT_NODE, element.DOCUMENT_TYPE_NODE]:
        for child in element.childNodes:
            child_name, child_dict = parse_element(child)
            if child_name in dict_data:
                try:
                    dict_data[child_name].append(child_dict)
                except AttributeError:
                    dict_data[child_name] = [dict_data[child_name], child_dict]
            else:
                dict_data[child_name] = child_dict 
    return element.nodeName, dict_data

if __name__ == '__main__':
    dom = minidom.parse('data.xml')
    f = open('data.json', 'w')
    f.write(json.dumps(parse_element(dom), sort_keys=True, indent=4))
    f.close()

7

XML- आधारित मार्कअप को JSON के रूप में परिवहन करने की एक विधि है जो इसे दोषरहित रूप से अपने मूल रूप में परिवर्तित करने की अनुमति देती है। Http://jsonml.org/ देखें ।

यह JSON का XSLT का एक प्रकार है। मुझे उम्मीद है आपको यह उपयोगी लगेगा


7

किसी को भी, जो अभी भी इसकी आवश्यकता हो सकती है। इस रूपांतरण को करने के लिए एक नया, सरल कोड दिया गया है।

from xml.etree import ElementTree as ET

xml    = ET.parse('FILE_NAME.xml')
parsed = parseXmlToJson(xml)


def parseXmlToJson(xml):
  response = {}

  for child in list(xml):
    if len(list(child)) > 0:
      response[child.tag] = parseXmlToJson(child)
    else:
      response[child.tag] = child.text or ''

    # one-liner equivalent
    # response[child.tag] = parseXmlToJson(child) if len(list(child)) > 0 else child.text or ''

  return response

1
यह पायथॉन 3.7 में कम से कम कार्य करता है, हालांकि दुर्भाग्यवश यह कुछ अप्रत्याशित डेटा को प्रमुख नामों में जोड़ता है यदि कुछ मान आपके xml में हैं, उदाहरण के लिए रूट स्तर नोड पर xmlns टैग इस तरह से प्रत्येक नोड कुंजी में दिखाई देता है: {'{ mben .apache.org / POM / 4.0.0 } विरूपण साक्ष्य: 'परीक्षण-सेवा', जो इस तरह से xml से आया है: <प्रोजेक्ट xmlns = " maven.apache.org/POM/4.0.0 " xsi: schemLLocation = " maven .apache.org / POM / 4.0.0 maven.apache.org/xsd/maven-4.0.0.xsd "xmlns: xsi =" w3.org/2001/XMLSchema-instance >> <modelVersion> 4.0.0 </ / ModelVersion>
hrbdg

5

आप http://designtheory.org/library/extrep/designdb-1.0.pdf पर एक नज़र रखना चाह सकते हैं । यह परियोजना XML फ़ाइलों के एक बड़े पुस्तकालय के JSON रूपांतरण में एक XML के साथ शुरू होती है। रूपांतरण में बहुत शोध किया गया था, और सबसे सरल सहज XML-> JSON मैपिंग का उत्पादन किया गया था (यह दस्तावेज़ में जल्दी वर्णित है)। सारांश में, सब कुछ एक JSON ऑब्जेक्ट में कनवर्ट करें, और ऑब्जेक्ट्स की सूची के रूप में दोहराते हुए ब्लॉक डालें।

ऑब्जेक्ट्स का अर्थ है कुंजी / मूल्य जोड़े (पायथन में, जावा में हैशमप, जावास्क्रिप्ट में ऑब्जेक्ट)

XML को एक समान दस्तावेज़ प्राप्त करने के लिए कोई मैपिंग नहीं है, इसका कारण यह है, यह अज्ञात है कि क्या एक कुंजी / मूल्य जोड़ी एक विशेषता या एक थी <key>value</key>, इसलिए वह जानकारी खो गई है।

यदि आप मुझसे पूछते हैं, तो विशेषताओं को शुरू करने के लिए एक हैक है; तब फिर से उन्होंने HTML के लिए अच्छा काम किया।


4

ठीक है, शायद सबसे सरल तरीका है एक्सएमएल को शब्दकोशों में पार्स करें और फिर इसे सिंपलसन के साथ क्रमबद्ध करें।


4

मेरा सुझाव है कि एक सीधे रूपांतरण के लिए नहीं जा रहा हूँ। XML को ऑब्जेक्ट में बदलें, फिर ऑब्जेक्ट से JSON तक।

मेरी राय में, यह एक साफ परिभाषा देता है कि XML और JSON कैसे मेल खाती है।

इसे सही होने में समय लगता है और आप इसमें से कुछ को उत्पन्न करने में मदद करने के लिए उपकरण भी लिख सकते हैं, लेकिन यह इस तरह दिखाई देगा:

class Channel:
  def __init__(self)
    self.items = []
    self.title = ""

  def from_xml( self, xml_node ):
    self.title = xml_node.xpath("title/text()")[0]
    for x in xml_node.xpath("item"):
      item = Item()
      item.from_xml( x )
      self.items.append( item )

  def to_json( self ):
    retval = {}
    retval['title'] = title
    retval['items'] = []
    for x in items:
      retval.append( x.to_json() )
    return retval

class Item:
  def __init__(self):
    ...

  def from_xml( self, xml_node ):
    ...

  def to_json( self ):
    ...

2

मैंने सरल XML स्निप्स के लिए पाया, नियमित अभिव्यक्ति का उपयोग करने से परेशानी से बचा जा सकता है। उदाहरण के लिए:

# <user><name>Happy Man</name>...</user>
import re
names = re.findall(r'<name>(\w+)<\/name>', xml_string)
# do some thing to names

XML पार्सिंग द्वारा ऐसा करने के लिए, जैसा कि @Dan ने कहा, डेटा के अलग-अलग होने का एक-से-एक समाधान नहीं है। मेरा सुझाव lxml का उपयोग करना है। हालांकि json के लिए समाप्त नहीं हुआ, lxml.objectify शांत अच्छे परिणाम दें:

>>> from lxml import objectify
>>> root = objectify.fromstring("""
... <root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
...   <a attr1="foo" attr2="bar">1</a>
...   <a>1.2</a>
...   <b>1</b>
...   <b>true</b>
...   <c>what?</c>
...   <d xsi:nil="true"/>
... </root>
... """)

>>> print(str(root))
root = None [ObjectifiedElement]
    a = 1 [IntElement]
      * attr1 = 'foo'
      * attr2 = 'bar'
    a = 1.2 [FloatElement]
    b = 1 [IntElement]
    b = True [BoolElement]
    c = 'what?' [StringElement]
    d = None [NoneElement]
      * xsi:nil = 'true'

1
लेकिन यह डुप्लिकेट नोड्स को हटाता है
पूय जूल

2

जबकि XML पार्सिंग के लिए बिल्ट-इन लिबास काफी अच्छे हैं मैं lxml का आंशिक हूँ ।

लेकिन आरएसएस फ़ीड को पार्स करने के लिए, मैं यूनिवर्सल फीड पार्सर की सिफारिश करूंगा , जो एटम को भी पार्स कर सकता है। इसका मुख्य लाभ यह है कि यह सबसे विकृत फ़ीड को भी पचा सकता है।

पायथन 2.6 में पहले से ही एक JSON पार्सर शामिल है, लेकिन बेहतर गति के साथ एक नया संस्करण सिम्पसन के रूप में उपलब्ध है ।

इन उपकरणों के निर्माण के साथ आपका ऐप उतना कठिन नहीं होना चाहिए।


2

मेरा जवाब विशिष्ट (और कुछ सामान्य) मामले को संबोधित करता है जहाँ आपको वास्तव में पूरे xml को json में बदलने की आवश्यकता नहीं है , लेकिन आपको xml के विशिष्ट भागों को ट्रैक / एक्सेस करने के लिए क्या आवश्यक है, और आपको इसे तेज़ करने की आवश्यकता है , और सरल (json / तानाशाह की तरह संचालन का उपयोग करके)।

पहुंच

इसके लिए, यह ध्यान रखना महत्वपूर्ण है कि एक्सएमएल का उपयोग करने के लिए एक्सएमएल का उपयोग lxmlकरना सुपर फास्ट है। अन्य उत्तरों में से अधिकांश में धीमा हिस्सा दूसरा पास है: एट्री संरचना का पता लगाना (आमतौर पर अजगर-भूमि में), इसे जसन में परिवर्तित करना।

जो मुझे उस दृष्टिकोण के लिए ले जाता है जिसे मैंने इस मामले के लिए सबसे अच्छा पाया: एक्सएमएल का उपयोग करके पार्सिंग करना lxml, और फिर एट्री नोड्स (लेज़ीली) को लपेटकर, उन्हें एक तानाशाही जैसा इंटरफ़ेस प्रदान करना।

कोड

यहाँ कोड है:

from collections import Mapping
import lxml.etree

class ETreeDictWrapper(Mapping):

    def __init__(self, elem, attr_prefix = '@', list_tags = ()):
        self.elem = elem
        self.attr_prefix = attr_prefix
        self.list_tags = list_tags

    def _wrap(self, e):
        if isinstance(e, basestring):
            return e
        if len(e) == 0 and len(e.attrib) == 0:
            return e.text
        return type(self)(
            e,
            attr_prefix = self.attr_prefix,
            list_tags = self.list_tags,
        )

    def __getitem__(self, key):
        if key.startswith(self.attr_prefix):
            return self.elem.attrib[key[len(self.attr_prefix):]]
        else:
            subelems = [ e for e in self.elem.iterchildren() if e.tag == key ]
            if len(subelems) > 1 or key in self.list_tags:
                return [ self._wrap(x) for x in subelems ]
            elif len(subelems) == 1:
                return self._wrap(subelems[0])
            else:
                raise KeyError(key)

    def __iter__(self):
        return iter(set( k.tag for k in self.elem) |
                    set( self.attr_prefix + k for k in self.elem.attrib ))

    def __len__(self):
        return len(self.elem) + len(self.elem.attrib)

    # defining __contains__ is not necessary, but improves speed
    def __contains__(self, key):
        if key.startswith(self.attr_prefix):
            return key[len(self.attr_prefix):] in self.elem.attrib
        else:
            return any( e.tag == key for e in self.elem.iterchildren() )


def xml_to_dictlike(xmlstr, attr_prefix = '@', list_tags = ()):
    t = lxml.etree.fromstring(xmlstr)
    return ETreeDictWrapper(
        t,
        attr_prefix = '@',
        list_tags = set(list_tags),
    )

यह कार्यान्वयन पूर्ण नहीं है, उदाहरण के लिए, यह उन मामलों का सफाई से समर्थन नहीं करता है, जहां किसी तत्व में पाठ और विशेषताएँ दोनों हैं, या दोनों पाठ और बच्चे (केवल इसलिए कि मुझे इसकी आवश्यकता नहीं थी जब मैंने इसे लिखा था ...) यह आसान होना चाहिए यद्यपि इसे सुधारना है।

गति

मेरे विशिष्ट उपयोग के मामले में, जहां मुझे केवल xml के विशिष्ट तत्वों को संसाधित करने की आवश्यकता थी, इस दृष्टिकोण ने @Martin Blech के xmltodict का उपयोग करने की तुलना में 70 और (फिर!) को सीधे करने के लिए एक सुपरराइजिंग और हड़ताली स्पीडअप दिया

बक्शीश

एक बोनस के रूप में, चूंकि हमारी संरचना पहले से ही तानाशाह की तरह है, हमें xml2jsonमुफ्त में एक और वैकल्पिक कार्यान्वयन मिलता है । हमें बस अपनी तानाशाही जैसी संरचना को पारित करने की आवश्यकता है json.dumps। कुछ इस तरह:

def xml_to_json(xmlstr, **kwargs):
    x = xml_to_dictlike(xmlstr, **kwargs)
    return json.dumps(x)

यदि आपकी xml में विशेषताएँ शामिल हैं, तो आपको attr_prefixकुंजी जोंस कुंजियाँ मान्य करने के लिए कुछ अल्फ़ान्यूमेरिक (जैसे "ATTR_") का उपयोग करने की आवश्यकता होगी ।

मैंने इस हिस्से को बेंचमार्क नहीं किया है।


अगर मैं करने का प्रयास करें json.dumps(tree)यह कहता प्रकार 'ETreeDictWrapper' की वस्तु JSON serializable नहीं है
Vlad टी

2

जब मैं python में XML के साथ कुछ भी करता हूं तो मैं लगभग हमेशा lxml पैकेज का उपयोग करता हूं। मुझे संदेह है कि ज्यादातर लोग lxml का उपयोग करते हैं। आप xmltodict का उपयोग कर सकते हैं लेकिन आपको XML को फिर से पार्स करने का जुर्माना देना होगा।

XML को lxml के साथ json में बदलने के लिए:

  1. Lxml के साथ XML दस्तावेज़ पार्स करें
  2. Lxml को डिक्टेट में बदलें
  3. सूची को json में बदलें

मैं अपनी परियोजनाओं में निम्न वर्ग का उपयोग करता हूं। ToJson विधि का उपयोग करें।

from lxml import etree 
import json


class Element:
    '''
    Wrapper on the etree.Element class.  Extends functionality to output element
    as a dictionary.
    '''

    def __init__(self, element):
        '''
        :param: element a normal etree.Element instance
        '''
        self.element = element

    def toDict(self):
        '''
        Returns the element as a dictionary.  This includes all child elements.
        '''
        rval = {
            self.element.tag: {
                'attributes': dict(self.element.items()),
            },
        }
        for child in self.element:
            rval[self.element.tag].update(Element(child).toDict())
        return rval


class XmlDocument:
    '''
    Wraps lxml to provide:
        - cleaner access to some common lxml.etree functions
        - converter from XML to dict
        - converter from XML to json
    '''
    def __init__(self, xml = '<empty/>', filename=None):
        '''
        There are two ways to initialize the XmlDocument contents:
            - String
            - File

        You don't have to initialize the XmlDocument during instantiation
        though.  You can do it later with the 'set' method.  If you choose to
        initialize later XmlDocument will be initialized with "<empty/>".

        :param: xml Set this argument if you want to parse from a string.
        :param: filename Set this argument if you want to parse from a file.
        '''
        self.set(xml, filename) 

    def set(self, xml=None, filename=None):
        '''
        Use this to set or reset the contents of the XmlDocument.

        :param: xml Set this argument if you want to parse from a string.
        :param: filename Set this argument if you want to parse from a file.
        '''
        if filename is not None:
            self.tree = etree.parse(filename)
            self.root = self.tree.getroot()
        else:
            self.root = etree.fromstring(xml)
            self.tree = etree.ElementTree(self.root)


    def dump(self):
        etree.dump(self.root)

    def getXml(self):
        '''
        return document as a string
        '''
        return etree.tostring(self.root)

    def xpath(self, xpath):
        '''
        Return elements that match the given xpath.

        :param: xpath
        '''
        return self.tree.xpath(xpath);

    def nodes(self):
        '''
        Return all elements
        '''
        return self.root.iter('*')

    def toDict(self):
        '''
        Convert to a python dictionary
        '''
        return Element(self.root).toDict()

    def toJson(self, indent=None):
        '''
        Convert to JSON
        '''
        return json.dumps(self.toDict(), indent=indent)


if __name__ == "__main__":
    xml='''<system>
    <product>
        <demod>
            <frequency value='2.215' units='MHz'>
                <blah value='1'/>
            </frequency>
        </demod>
    </product>
</system>
'''
    doc = XmlDocument(xml)
    print doc.toJson(indent=4)

मुख्य में निर्मित से उत्पादन है:

{
    "system": {
        "attributes": {}, 
        "product": {
            "attributes": {}, 
            "demod": {
                "attributes": {}, 
                "frequency": {
                    "attributes": {
                        "units": "MHz", 
                        "value": "2.215"
                    }, 
                    "blah": {
                        "attributes": {
                            "value": "1"
                        }
                    }
                }
            }
        }
    }
}

जो इस xml का एक परिवर्तन है:

<system>
    <product>
        <demod>
            <frequency value='2.215' units='MHz'>
                <blah value='1'/>
            </frequency>
        </demod>
    </product>
</system>



1

lxml2json देखें (खुलासा: मैंने इसे लिखा था)

https://github.com/rparelius/lxml2json

यह बहुत तेज़ है, हल्का है (केवल lxml की आवश्यकता है), और एक फायदा यह है कि आपके पास इस बात पर नियंत्रण है कि कुछ तत्वों को सूचियों या dtsts में परिवर्तित किया जाता है या नहीं


1

आप घोषणापत्र का उपयोग कर सकते हैं। इसमें मल्टी फीचर्स और जटिल नेस्टेड सपोर्ट जैसे एडवांस फीचर हैं। आपको बस इसके लिए एक साधारण प्रोसेसर लिखने की आवश्यकता है। समान कोड के साथ, आप JSON में भी वापस कनवर्ट कर सकते हैं। यह काफी सीधा है और प्रलेखन बहुत बढ़िया है।

लिंक: https://declxml.readthedocs.io/en/latest/index.html


-1

पायथन में डेटा तैयार करें : JSON बनाने के लिए सबसे पहले आपको अजगर में डेटा तैयार करना होगा। हम डेटा तैयार करने के लिए पायथन में सूची और शब्दकोश का उपयोग कर सकते हैं।

पायथन सूची <==> JSON Array

पायथन डिक्शनरी <==> JSON ऑब्जेक्ट (मुख्य मान प्रारूप) अधिक विवरण के लिए इसे जांचें

https://devstudioonline.com/article/create-json-and-xml-in-python


ढेर अतिप्रवाह में आपका स्वागत है! जबकि लिंक ज्ञान साझा करने का बहुत अच्छा तरीका है, अगर वे भविष्य में टूट जाते हैं तो वे वास्तव में इस सवाल का जवाब नहीं देंगे। अपने उत्तर में उस लिंक की आवश्यक सामग्री को जोड़ें जो प्रश्न का उत्तर देती है। यदि सामग्री बहुत जटिल है या यहां फिट होने के लिए बहुत बड़ी है, तो प्रस्तावित समाधान के सामान्य विचार का वर्णन करें। हमेशा याद रखें कि मूल समाधान की वेबसाइट पर एक लिंक संदर्भ रखें। देखें: मैं एक अच्छा जवाब कैसे लिखूं?
s --unıɐ ɐ qɐp

-4

JSON प्रारूप में डेटा का प्रतिनिधित्व करने के लिए

name=John
age=20
gender=male
address=Sector 12 Greater Kailash, New Delhi
Jobs=Noida,Developer | Gurugram,Tester |Faridabad,Designer

में json हम कुंजी और मान प्रारूप में एक डेटा repesent

{
    "name":"john",
    "age":20,
    "gender":"male",
    "address":["New kP college","Greater Kailash","New Delhi"],
    "jobs":[
               {"Place":"Noida","Title":"Developer "},
               {"Place":"Gurugram","Title":"Tester "},
               {"Place":"Faridabad","Title":"Designer"}
           ]
}

XML प्रारूप में डेटा का प्रतिनिधित्व करने के लिए

<!-- In xml we write a code under a key you can take any key -->
<info> <!-- key open -->

<name> john </name> 
<age> 20 </age>
<gender> male </gender>

<address> 
<item> New kP college </item>
<item> Greater Kailash </item>
<item> New Delhi </item>
</address>

<jobs>
 <item>
  <title>Developer </title>
  <place>Noida</place>
 </item>

 <item>
  <title>Designer</title>
  <place>Gurugram</place>
 </item>
 
 <item>
  <title>Developer </title>
  <place>Faridabad</place>
 </item>
</jobs>

</info> <!-- key close-->

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.