Home  >  Article  >  Backend Development  >  Detailed explanation of examples of converting database data into JSON format

Detailed explanation of examples of converting database data into JSON format

零下一度
零下一度Original
2017-07-21 16:24:543888browse

I am planning to build an automated operation and maintenance platform recently, so I am looking into Django knowledge.

In the actual project development, we encountered a small problem: the mainstream data interaction between the front and back ends is JSON. It is relatively simple for the front-end to transmit data to the server. What is slightly more troublesome is that the server-side transmits JSON to the front-end.

First of all, the data is obtained from the database. Django uses ORM technology by default. However, as an operation and maintenance personnel, I am actually disgusted with this kind of abstract API. Because although it abstracts the database table into an object for developers, which is convenient for development and does not require writing SQL statements, it is also the culprit of performance bottlenecks in later programs (when doing troubleshooting again, I encountered a 70 lines of SQL statements...). In addition, for an operation and maintenance personnel, pure SQL is a basic ability, and learning the syntax of ORM will increase the learning cost.

Anyway, the theme this time is to convert the data obtained from the database into JSON. I will share it below using both ORM and SQL methods.

1. Use Django Model layer and ORM technology to convert into JSON format

1 def getdata(request):2    # 使用ORM3    # all()返回的是QuerySet 数据类型;values()返回的是ValuesQuerySet 数据类型4    data = models.VM.objects.values('id', 'ip', 'host', 'username')5    data = serializers.serialize("json", tomcats)6    return JsonResponse(list(data), safe=False)

2. Completely abandon the Django Model layer and convert pure SQL into JSON format

1 def getdata(request):2 # 使用SQL3     with connection.cursor() as cursor:4         cursor.execute('select id, machine, tomcathome, ipaddress, description from tomcatData')5         data = dictfetchall(cursor)6     return JsonResponse(data, safe=False, json_dumps_params={'ensure_ascii': False})

JsonResponse object:

class <span class="highlighted">JsonResponse</span>(data, encoder=DjangoJSONEncoder, safe=True, json_dumps_params=None,** kwargs)

This class is a subclass of HttpRespon. Its main difference from the parent class is:

1. Its default Content-Type is set to: application/json

2. The first parameter, data, should be a dictionary type. When the safe parameter is set to: False, then data can be filled in with any object that can be converted to JSON format, such as list, tuple, set. The default safe parameter is True. If the data type you pass in is not a dictionary type, then it will throw a TypeError exception.

3. The json_dumps_params parameter is a dictionary, which will call the json.dumps() method and pass the parameters in the dictionary to the method.

Through the above explanation, the parameters passed in JsonResponse() of the above two methods are very clear.

In this way, the data will be passed to the front end in JSON format, and the front end can obtain it using AJAX and process or display it.

The above is the detailed content of Detailed explanation of examples of converting database data into JSON format. 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