[BangPypers] JSON PARSER
Jayanth Koushik
jnkoushik at gmail.com
Fri Mar 21 10:47:48 CET 2014
Hi Prashant
I think he wants the duplicates to be loaded, not cause an exception.
Jayanth
On Fri, Mar 21, 2014 at 3:15 PM, Prashant Gaur <91prashantgaur at gmail.com>wrote:
> 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