[BangPypers] JSON PARSER

Prashant Gaur 91prashantgaur at gmail.com
Fri Mar 21 10:45:47 CET 2014


Hi Lokesh,

we can pass lookup while parsing your json file which will make sure that
name is repetitive or not .

import json

def duplicate_checking_hook(pairs):
    ''' lookup for duplicate names'''
    result = dict()
    for key, val in pairs:
        if key in result:
            raise KeyError('Duplicate Key specified: %s % key)
        result[key] = val
    return result

>>> json.loads('''{"test":"hi","test":"bye"}''',
object_pairs_hook=duplicate_checking_hook)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/json/__init__.py", line 339, in loads
    return cls(encoding=encoding, **kw).decode(s)
  File "/usr/lib/python2.7/json/decoder.py", line 366, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python2.7/json/decoder.py", line 382, in raw_decode
    obj, end = self.scan_once(s, idx)
  File "<stdin>", line 5, in duplicate_checking_hook
KeyError: u'Duplicate key specified: a'

While

>>> json.loads('''{"test":"hi","test1":"bye"}''',
object_pairs_hook=duplicate_checking_hook)
{u'test': u'hi', u'test1': u'bye'}
>>>



def dupe_checking_hook(pairs):
    result = dict()
    for key,val in pairs:
        if key in result:
            raise KeyError("Duplicate key specified: %s" % key)
        result[key] = val
    return result





On Fri, Mar 21, 2014 at 2:59 PM, lokesh bobby <lokeshbobbys at yahoo.com>wrote:

> Hi Jayanth,
>
> Ideally speaking a JSON shouldn't be created with repetitive key names.
> But manually it is possible that a proper JSON file can be appended with a
> duplicate key. We need to catch that duplicate key. If we are going to use
> json.load(), the repetitive keys of the JSON file wont get loaded. Only the
> last occurrence of the key will be there in that loaded data.
>
> Instead I want that entire data in JSON file should be loaded. Hoping that
> you got the point what I want :-)
>
> Thanks,
> Lokesh.
>
>
>
>
>
> On Friday, 21 March 2014 2:45 PM, Jayanth Koushik <jnkoushik at gmail.com>
> wrote:
>
> Hi Lokesh
>
>
> The 'problem' that you talk about isn't really a problem. Since the JSON
> specification does not say what is to be done for repeated names, it is up
> to the implementation to decide. What is your requirement for handling
> repeated names?
>
>
> Jayanth
>
>
>
>
> On Fri, Mar 21, 2014 at 2:30 PM, lokesh bobby <lokeshbobbys at yahoo.com>
> wrote:
>
> Hi Noufal,
> >
> >Thanks for your reply. I am not looking for loading the JSON file. There
> is a limitation in it. Go thru the links
> >
> >
> http://docs.python.org/2/library/json.html#repeated-names-within-an-object
> >
> http://docs.python.org/3.2/library/json.html#repeated-names-within-an-object
> >
> >In order to get rid of that problem, I am looking for some JSON stream
> parsers.
> >
> >Thanks,
> >Lokesh.
> >
> >
> >
> >
> >On Friday, 21 March 2014 2:09 PM, Noufal Ibrahim KV <
> noufal at nibrahim.net.in> wrote:
> >
> >On Fri, Mar 21 2014, lokesh bobby wrote:
> >
> >
> >> Hi ALL,
> >>
> >> Can you share your thoughts on how to parse a JSON file by using
> >> python?
> >
> >import json
> >
> >with open("data.json") as f:
> >     json.load(f)
> >
> >
> >[...]
> >
> >
> >--
> >Cordially,
> >Noufal
> >http://nibrahim.net.in
> >_______________________________________________
> >BangPypers mailing list
> >BangPypers at python.org
> >https://mail.python.org/mailman/listinfo/bangpypers
> >
> _______________________________________________
> BangPypers mailing list
> BangPypers at python.org
> https://mail.python.org/mailman/listinfo/bangpypers
>



-- 
Prashant Gaur

Mobile : +91 9717353657
http://gaurprashant.blogspot.in/
http://stackoverflow.com/users/1850358/prashant-gaur
http://www.about.me/prashantgaur/


More information about the BangPypers mailing list