在Java中创建JSON并在Python中解析?

1 投票
1 回答
1241 浏览
提问于 2025-04-18 05:56

我正在使用snmp4j进行SNMP Walk,结果需要发送给客户端,让他们用Python解码以便进一步分析。我对json还不太熟悉,希望能了解将Java数据类型转换为json的最佳方法,这样在Python中就能轻松解码。我不确定这些数据能否被解码成合适的字典或列表,但任何帮助都会很有用。目前我正在使用gson将下面的响应转换为json。

[vbs=[1.3.6.1.2.1.2.2.1.2.1 = VLAN1, 1.3.6.1.2.1.2.2.1.2.2 = FastEthernet0/1],status=0,exception=null,report=null]

这是我使用json.loads时得到的结果。

[{u'vbs': [{u'variable': {u'value': [86, 76, 65, 78, 49]}, u'oid': {u'value': [1, 3, 6, 1, 2, 1, 2, 2, 1, 2, 1]}}, {u'variable': {u'value': [70, 97, 115, 116, 69, 116, 104, 101, 114, 110, 101, 116, 48, 47, 49]}, u'oid': {u'value': [1, 3, 6, 1, 2, 1, 2, 2, 1, 2, 2]}}], u'status': 0}]

请帮我理解更好的方式来编码成json,以便在Python中容易使用和解码。这里需要Java序列化吗?我不太明白这是什么意思,但我还是在想我的问题是否清楚,任何帮助,至少指引我找到合适的资源,都会非常有帮助。

1 个回答

0

一个好的解决办法是使用Java中的HashMap。当它被转换成JSON格式时,可以很方便地解码成字典,而不需要任何额外的处理。下面是我怎么做的。

//declare a hashmap
HashMap hm = new HashMap();

//loop over the snmp result
for (VariableBinding varBinding : varBindings) {
    hm.put(varBinding.getOid(), varBinding.getVariable().toString());
String js = new Gson().toJson(hm);
//now if you return js as string and do json.loads(js) in python you will get dictionary with oid as key and value as value for all oids.

撰写回答