我想将json对象分为两个单独的单元
编辑-为什么
我有一个带有json API的网络应用。我想要像protobuf这样的足迹,但想要像json这样的无缝性。我认为有关protobuf或其他所需对象的所有信息已经在json对象中。
因此,我想在运行时生成架构和数据并仅发送元组
(schema_hash, binary_compressed)
到服务器。如果服务器识别到schema_hash,则可以将元组转换为内部对象并对其进行处理。否则,发送方可以仅重新发送json,服务器将创建架构并对其进行缓存。因此,您可以获得protobuf的速度和json的便捷性。
它必须适用于所有json对象,而不仅仅是下面的平面。
示例
{
"variable_a": 1,
"variable_b": 2
}
使用python genson我可以生成:
{
"$schema": "http://json-schema.org/schema#",
"type": "object",
"properties": {
"variable_a": {
"type": "integer"
},
"variable_b": {
"type": "integer"
}
},
"required": [
"variable_a",
"variable_b"
]
如何生成数据部分
在这种情况下,只能是两个整数,总共占2 * 32位空间
答案 0 :(得分:1)
这有用吗?
obj = {
"variable_a": 1,
"variable_b": 2
}
# Get the values in the dictionary
vals = obj.values()
# Store the values as bytes
vals_as_bytes = bytearray(vals)
# Write the bytes to a binary file
with open("filename", "wb") as file:
file.write(vals_as_bytes)
答案 1 :(得分:1)
您可以将json视为Dictionary。要对其进行迭代,可以使用以下方法:
dic = {
"variable_a": 1,
"variable_b": 2
}
要对其进行迭代,请使用以下代码:
for key in dic:
print(key, '-->', dic[key])
但是,如果您有多个数据记录作为json,则可以将其保存在dataframe对象中,前提是所有json对象中的属性都相同:
columns = []
for key in dic:
columns.append(key)
import pandas as pd
df = pd.DataFrame(columns=columns)
df.loc[len(df)] = dic