我正在开发一个安全服务,它将返回一个权限列表,我正在尝试估计json响应对象的大小。这是一段样本数据:
ID = 123 VARIABLENAME = CanAccessSomeContent
我正在寻找一种简单的方法来估计json响应对象的大小为1500行。是否有在线估算工具或其他一些我可以用来轻松获得粗略尺寸估算的技术?
答案 0 :(得分:2)
使用Python,您可以通过创建字典来估算大小,或者只创建一个...
import json
import os
import sys
dict = {}
for a in range(0, 1500):
dict[a] = {'VariableName': 'CanAccessSomeContent'}
output = json.dumps(dict, indent = 4)
print ("Estimated size: " + str(sys.getsizeof(output) / 1024) + "KB")
with open( "test.json", 'wb') as outfile:
outfile.write(output)
print ("Actual size: " + str(os.path.getsize('test.json') / 1024) + "KB")
输出:
Estimated size: 100KB
Actual size: 99KB
答案 1 :(得分:1)
我不确定这是否是你所追求的,因为这看起来非常基本,但这里有:
A
)。B
)。现在X
行,估计的json响应为X * (B-A) + A
因此,如果A是100个字节,B是150个字节,那么对于1500行,我们将得到:
1500 * (150-100) + 100 = 75100 bytes = 73 KB
答案 2 :(得分:1)
估算文件大小的函数(JSON-Size和UTF-8 Length节点回购的Mash)
function json_filesize (value) {
// returns object size in bytes
return (~-encodeURI(JSON.stringify(value)).split(/%..|./).length)/1048576
}
json_filesize({foo:' bar'})>> 13
答案 3 :(得分:1)
在需要时,我通过添加一个仅计算字符数的文件型对象并将json.dump()放入其中来解决此问题:
# File-like object, throws away everything you write to it but keeps track of the size.
class MeterFile:
def __init__(self, size=0):
self.size = size
def write(self, string):
self.size += len(string)
# Calculates the JSON-encoded size of an object without storing it.
def json_size(obj, *args, **kwargs):
mf = MeterFile()
json.dump(obj, mf, *args, **kwargs)
return mf.size
优点是编码不会存储在内存中,这可能会很大,尤其是在您关心开始的大小的情况下。