Java 使用Python将JSONObject转换为JSONArray

Java 使用Python将JSONObject转换为JSONArray,java,python,json,Java,Python,Json,我浏览了各种线程,但在python中找不到具体的答案。 我有一个json文件 { "StoreID" : "123", "Status" : 3, "data" : { "Response" : { "section" : "25", "elapsed" : 277.141, "products" : {

我浏览了各种线程,但在python中找不到具体的答案。 我有一个json文件

{
    "StoreID" : "123",
    "Status" : 3,
    "data" : {
            "Response" : {
                    "section" : "25",
                    "elapsed" : 277.141,
                    "products" : {
                            "prd_1": {
                                    "price" : 11.99,
                                    "qty" : 10,
                                    "upc" : "0787493"
                            },
                            "prd_2": {
                                    "price" : 9.99,
                                    "qty" : 2,
                                    "upc" : "0763776"
                            },
                            "prd_3": {
                                    "price" : 29.99,
                                    "qty" : 8,
                                    "upc" : "9948755"
                            }
                    },
                    "type" : "Tagged"
            }
    }
}
我需要通过将json对象“products”更改为数组形式,将此json文件转换为以下格式

{
    "StoreID" : "123",
    "Status" : 3,
    "data" : {
            "Response" : {
                    "section" : "25",
                    "elapsed" : 277.141,
                    "products" : [
                            {
                                    "price" : 11.99,
                                    "qty" : 10,
                                    "upc" : "0787493"
                            },
                            {
                                    "price" : 9.99,
                                    "qty" : 2,
                                    "upc" : "0763776"
                            },
                            {
                                    "price" : 29.99,
                                    "qty" : 8,
                                    "upc" : "9948755"
                            }
                    ],
                    "type" : "Tagged"
            }
    }
}

在python中有什么好的方法可以做到这一点吗。我看到大多数人都在使用java,但不是python。你能告诉我用python做这件事的方法吗。

你想做点什么吗

import json
import copy

a = json.load(open("your_data.json", "r"))

b = copy.deepcopy(a)

t =  a.get('data').get('Response').get('products')
b['data']['Response']['products'] = t.values()    # Originally was: [t[i] for i in t]
您可以使用JSON返回JSON。dumps(b)

只需获取products dictionary的values(),这将为您提供一个值数组。假设您的json在file1.txt中,下面的代码在我看来是有效的

import json
with open('file1.txt') as jdata:
    data = json.load(jdata)
    d = data
d["data"]["Response"]["products"] = d["data"]["Response"]["products"].values()
print(json.dumps(d))
输出:

{"Status": 3, "StoreID": "123", "data": {"type": "Tagged", "Response": {"section": "25", "products": [{"price": 9.99, "upc": "0763776", "qty": 2}, {"price": 29.99, "upc": "9948755", "qty": 8}, {"price": 11.99, "upc": "0787493", "qty": 10}], "elapsed": "277.141"}}}

他可能希望按键对输出进行排序(例如,
[v表示k,v表示已排序(d[“数据”][“响应”][“产品”].items())]
)。但除此之外,是的,这就是全部。谢谢。这对我来说非常有效。无法投票,因为我没有可信度。@user2129946,谢谢。您应该能够选择它作为答案,这也将增加您的信任级别(投票)。为什么要添加
deepcopy
?为什么要使用listcomp来做
t.values()
已经做过的事情呢?(或
list(t.values())
in 3.x.)@abarnert我使用deepcopy只是为了预防,OP可以不使用它。列表comp不好,应该做t.values()来预防什么?为了避免修改他没有明显用途的临时对象?或者,您是否计划在更改
b
或其他内容(在这种情况下可能需要)时迭代(部分)
a