แปลง 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”