แปลง multiple JSON object string ด้วย Python

สมมติว่าเรามี JSON object หลายๆ ตัวซ้อนกันอยู่ใน string แบบนี้ (multi line ด้วยอ่ะ ไม่งั้นล้นหน้า page wordpress)

json_string = = """
{"ID":1,"Key":{"Name":"A", "Surname":"A1"},"Pets":["Cat","Dog"]},
{"ID":9,"Key":{"Name":"Z", "Surname":"Z3"},"Pets":["Fish"]}
"""

ถ้าเรา convert มันให้กลายเป็น JSON object (จริงๆ คือ Python dict object) ด้วย json.loads(string) ตรงๆ ผลลัพท์ที่ได้จะบึ้มดังนี้

import json

json_string = = """
{"ID":1,"Key":{"Name":"A", "Surname":"A1"},"Pets":["Cat","Dog"]},
{"ID":9,"Key":{"Name":"Z", "Surname":"Z3"},"Pets":["Fish"]}
"""

json_obj = json.loads(json_string)

>>> Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "...\lib\json\__init__.py", line 354, in load
s
    return _default_decoder.decode(s)
  File "...\lib\json\decoder.py", line 342, in decod
e
    raise JSONDecodeError("Extra data", s, end)
json.decoder.JSONDecodeError: Extra data: line 1 column 65 (char 64)

ทางแก้คือเราต้องทำให้ string ก้อนนั้นเป็น JSON array แล้วเราจะได้ array ของ JSON object มาวนแต่ละตัวได้

import json

json_string = """
[
    {"ID":1,"Key":{"Name":"A", "Surname":"A1"},"Pets":["Cat","Dog"]},
    {"ID":9,"Key":{"Name":"Z", "Surname":"Z3"},"Pets":["Fish"]}
]
"""

json_obj = json.loads(json_string)

print(json_obj[0])
>>> {'ID': 1, 'Key': {'Name': 'A', 'Surname': 'A1'}, 'Pets': ['Cat', 'Dog']}

print(json_obj2[1])
>>> {'ID': 9, 'Key': {'Name': 'Z', 'Surname': 'Z3'}, 'Pets': ['Fish']}

ป.ล. string ถ้าไม่ multi lines ก็ใช้วิธีเดียวกันนั่นแหละ

ป.ล. 2 เพิ่งเห็นว่าเจ้า Gutenberg editor นี่ช่องให้ code ไม่มีรองรับ code syntax, formatting โคตรกากกกกกก ห่วยกว่าเก่าอีก

Far Cry 5

Far Cry 5 เป็นเกมแรกในตระกูล Far Cry ที่ผมเล่นจนจบ ก่อนหน้านี้ผมเคยเล่นภาค 4 ไปประมาณชั่วโมงกว่าๆ ตอนซื้อ PS4 มาใหม่ๆ และหลังจากนั้นก็ไม่ได้แตะมันอีกเลยซะงั้นก็มาแก้ตัวเอาในภาคนี้แล้วครับ ผมซื้อเกมนี้ตั้งแต่วันแรกที่ออก แต่หยุดเล่นไปเกือบเดือนเพื่อเล่น God of War ให้จบแล้วค่อยมาเล่นต่อเมื่อต้นเดือนที่ผ่านมาเอง


Continue reading “Far Cry 5” →

Odin Sphere Leifthrasir

Odin Sphere Leifthrasir เป็นภาค Remaster ของเกม Odin Sphere ซึ่งเป็นเกมที่ผมอยากเล่นตัั้งแต่ตอนมันออก PS2 แล้ว แต่ตอนนั้นไม่มีเครื่องเล่น จริงๆ Leifthrasir มันออกตั้งแต่ปี 2016 บนทั้ง PS3, PS4 และ Vita ผมซื้อตั้งแต่วันแรกที่มันออกมา เล่นไปครึ่งนึงแล้วอยู่ๆ ก็ดองมันไว้ 1 ปีเต็มๆ (เพราะไปเล่นเกมอื่น) จนเพิ่งกลับมาเล่นจบในปี 2018 นี่แหละ T^T


Continue reading “Odin Sphere Leifthrasir” →