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:
JSON | Python |
---|---|
dict | |
list | |
unicode | |
int, long | |
float | |
True | |
False | ##null |
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.
>>> 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__
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!