面接の質問の第4レベル:
パート1-テストサイト:
- ダンプ機能の使用。
パート2-インタビューの質問:
1.インタビューの質問1:Pythonオブジェクトを対応するJSON文字列に変換します。
2.インタビューの質問2:オブジェクトのリストをJSON配列に変換します。
パート3-分析:
インタビューの質問の1つは、Pythonオブジェクトを対応するJSON文字列に変換します。
- dumps()関数を使用する場合、重要なポイントは変換関数を使用することです〜
# coding=utf-8
# _author__ = 孤寒者
import json
class Product:
def __init__(self, name, age, height):
self.name = name
self.age = age
self.height = height
product = Product('孤寒者', 18, 130)
def product2Dict(obj):
return {
'name': obj.name,
'age': obj.age,
'height': obj.height
}
# dumps()方法的default参数指定转换函数。
jsonStr = json.dumps(product, default=product2Dict, ensure_ascii=False)
print(jsonStr)
print(type(jsonStr))
インタビューの質問2は、オブジェクトのリストをJSON配列に変換します。
- この関数を実装するには、オブジェクトのリストが必要なので、JSONドキュメント(以下のtest.jsonファイル)をオブジェクトのリスト(前の質問で操作方法をすでに知っています〜)に変換してから、 JSON配列に変換します。
[
{
"name": "孤寒者",
"age": 18,
"height": 130
},
{
"name": "小张",
"age": 18,
"height": 80
}
]
# coding=utf-8
# _author__ = 孤寒者
import json
class Product:
def __init__(self, d):
self.__dict__ = d
with open('test.json', 'r', encoding='utf-8') as f:
jsonStr = f.read()
products = json.loads(jsonStr, object_hook=Product)
print(products)
上のスクリーンショットは、JSONドキュメントをオブジェクトのリストに実際に変換したことを示しています。
問題の解決を始めましょう。
# coding=utf-8
# _author__ = 孤寒者
import json
class Product:
def __init__(self, d):
self.__dict__ = d
with open('test.json', 'r', encoding='utf-8') as f:
jsonStr = f.read()
products = json.loads(jsonStr, object_hook=Product)
print(products)
for product in products:
print(product.name)
print("*"*25)
# 解题部分:
def product2Dict(obj):
return {
'name': obj.name,
'age': obj.age,
'height': obj.height
}
jsonStr = json.dumps(products, default=product2Dict, ensure_ascii=False)
print(jsonStr)
print(type(jsonStr))
パート4-結論:
- jsonモジュールのdumps関数は、オブジェクトをJSON文字列に変換するために使用されます。
- オブジェクトの属性値を抽出し、JSONオブジェクトを生成できるデフォルトのパラメーターを使用して変換関数を指定します。最後に、ダンプは、変換関数によって返されたJSONオブジェクトをJSON文字列に変換します。