簡體   English   中英

如何格式化 Json 內容類型?

[英]How to formatting a Json content type?

我只需要提取以下json的操作內容:

{"entries":[{"description":"Text transform on 101 cells in column Column 2: value.toLowercase()","operation":{"op":"core/text-transform","engineConfig":{"facets":[],"mode":"row-based"},"columnName":"Column 2","expression":"value.toLowercase()","onError":"keep-original","repeat":false,"repeatCount":10,"description":"Text transform on cells in column Column 2 using expression value.toLowercase()"}},{"description":"Text transform on 101 cells in column Column 6: value.toDate()","operation":{"op":"core/text-transform","engineConfig":{"facets":[],"mode":"row-based"},"columnName":"Column 6","expression":"value.toDate()","onError":"keep-original","repeat":false,"repeatCount":10,"description":"Text transform on cells in column Column 6 using expression value.toDate()"}}]}

它應該如下所示:

[{"op": "core/text-transform", "engineConfig": {"facets": [], "mode": "row-based"}, "columnName": "Column 2", "expression": "value.toLowercase()", "onError": "keep-original", "repeat": "false", "repeatCount": 10, "description": "Text transform on cells in column Column 2 using expression value.toLowercase()"}, {"op": "core/text-transform", "engineConfig": {"facets": [], "mode": "row-based"}, "columnName": "Column 6", "expression": "value.toDate()", "onError": "keep-original", "repeat": "false", "repeatCount": 10, "description": "Text transform on cells in column Column 6 using expression value.toDate()"}]

我嘗試使用此代碼:

import json
operations = [{"description":"Text transform on 101 cells in column Column 2: value.toLowercase()","operation":{"op":"core/text-transform","engineConfig":{"facets":[],"mode":"row-based"},"columnName":"Column 2","expression":"value.toLowercase()","onError":"keep-original","repeat":"false","repeatCount":10,"description":"Text transform on cells in column Column 2 using expression value.toLowercase()"}},{"description":"Text transform on 101 cells in column Column 6: value.toDate()","operation":{"op":"core/text-transform","engineConfig":{"facets":[],"mode":"row-based"},"columnName":"Column 6","expression":"value.toDate()","onError":"keep-original","repeat":"false","repeatCount":10,"description":"Text transform on cells in column Column 6 using expression value.toDate()"}}]
new_operations = []

for operation in operations:
  new_operations.append(operation["operation"])

x = json.dumps(new_operations)
print(x)

但是,我必須手動在“fake”之類的詞中加上引號,並刪除第一個“條目”部分才能使其正常工作。 有誰知道如何自動完成?

IIUC你可以這樣做。 將其讀取為 json 數據,提取所需的部分並將其轉儲回 json。

with open('your-json-data.json') as j:
    data = json.load(j)

new_data = []
for dic in data['entries']:
    for key,value in dic.items():
        if key == 'operation':
            dic = {k:v for k,v in value.items()}
            new_data.append(dic)

x = json.dumps(new_data)
print(x)

輸出:

[
    {
        "op":"core/text-transform",
        "engineConfig":{
            "facets":[              
            ],
            "mode":"row-based"
        },
        "columnName":"Column 2",
        "expression":"value.toLowercase()",
        "onError":"keep-original",
        "repeat":false,
        "repeatCount":10,
        "description":"Text transform on cells in column Column 2 using expression value.toLowercase()"
    },
    {
        "op":"core/text-transform",
        "engineConfig":{
            "facets":[                
            ],
            "mode":"row-based"
        },
        "columnName":"Column 6",
        "expression":"value.toDate()",
        "onError":"keep-original",
        "repeat":false,
        "repeatCount":10,
        "description":"Text transform on cells in column Column 6 using expression value.toDate()"
    }
]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM