Home  >  Article  >  Backend Development  >  In-depth understanding of Python's parsing of Json_python

In-depth understanding of Python's parsing of Json_python

不言
不言Original
2018-04-02 17:26:051438browse

Json is a commonly used data exchange structure. Due to its lightweight, easy to read and write characteristics, it is widely used in the Internet. The following article mainly introduces the relevant information on Json parsing by Python. Friends in need can refer to it. Let’s take a look together.

Json Introduction

JSON (JavaScript Object Notation) is a lightweight data exchange format. It is based on a subset of JavaScript (Standard ECMA-262 3rd Edition - December 1999). JSON uses a completely language-independent text format, but also uses conventions similar to the C language family (including C, C++, C#, Java, JavaScript, Perl, Python, etc.). These properties make JSON an ideal data exchange language. Easy for humans to read and write, and easy for machines to parse and generate.

Its format is generally like this:

The object is an unordered collection of "name/value pairs". An object starts with "{" (left bracket) and ends with "}" (right bracket). Each "name" is followed by a ":" (colon); "name/value" pairs are separated by a "," (comma).

For example:


{"b": "Hello", "c": null, "a": true}


Its value can be enclosed in double quotes A string, number, true, false, null, object or array. These structures can be nested.


The value can be a string enclosed in double quotes, a numerical value (number), true, false, null, or object. Or array. These structures can be nested.

Use Python to encode and parse Json

Python has a built-in json package to help us complete json operations.

To export Python’s dictionary structure to json, use json.dumps(). To read json into Python’s dictionary structure, use json.loads() .

If it is not a string operation but a file operation, use the json.load() function and the json.dump() function respectively.


import json
 
data = {
 'name' : 'ACME',
 'shares' : 100,
 'price' : 542.23
}
 
json_str = json.dumps(data)
data = json.loads(json_str)
 
# Writing JSON data to file
with open('data.json', 'w') as f:
 json.dump(data, f)
 
# Reading data back
with open('data.json', 'r') as f:
 data = json.load(f)


The default types correspond to the following:


##objectdictarrayliststringunicodenumber (int )int, long##number (real)truefalse##nullNoneEncoding and decoding between other data types and Json
JSON Python
float
True
False

Generally speaking, Python’s parsing of json is between list or dict Operation, if you need to convert between other types and json, you need the object_hook parameter. First define a class and initialize the class dictionary into json key-value pairs. In this way, the parameters of json become attributes of the class.

Convert a JSON dictionary to a Python object Python

>>> class JSONObject:
...  def __init__(self, d):
...   self.__dict__ = d
...
>>>
>>> data = json.loads(s, object_hook=JSONObject)
>>> data.name
'ACME'
>>> data.shares
50
>>> data.price
490.1



You can also specify the "function ” to perform the conversion.

Use a function to specify the serialization method, that is, turn the object's "property-value" pair into a dictionary pair, the function returns a dictionary, and then json.dumps

will be formatted this dictionary.

If json is turned into an object through a function, first obtain the class name, then create an object through __new__

(without calling the initialization function), and then assign each attribute of the json dictionary to object.

Use a function to specify the json conversion method Python

def serialize_instance(obj):
 d = { '__classname__' : type(obj).__name__ }
 d.update(vars(obj))
 return d
 
# Dictionary mapping names to known classes
classes = {
 'Point' : Point
}
 
def unserialize_object(d):
 clsname = d.pop('__classname__', None)
 if clsname:
  cls = classes[clsname]
  obj = cls.__new__(cls) # Make instance without calling __init__
  for key, value in d.items():
   setattr(obj, key, value)
  return obj
 else:
  return d



The usage method is as follows :

>>> p = Point(2,3)
>>> s = json.dumps(p, default=serialize_instance)
>>> s
'{"__classname__": "Point", "y": 3, "x": 2}'
>>> a = json.loads(s, object_hook=unserialize_object)
>>> a
<__main__.Point object at 0x1017577d0>
>>> a.x
2
>>> a.y
3


Related recommendations:

Detailed explanation of JSON parsing by Python

Examples of Python's method of judging Json strings

In-depth understanding of python's summary of json operations



The above is the detailed content of In-depth understanding of Python's parsing of Json_python. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn