1

snmp4j を使用して SNMP ウォークの結果をクライアントに送信し、さらに分析するために Python でデコードする必要があります。私はjsonが初めてで、Pythonで簡単にデコードできるように、Javaデータ型をjsonに変換する最良の方法を知るのに役立つ必要があります。適切な辞書またはリストでデコードできるかどうかはわかりませんが、そうするための助けがあれば便利です。現在、以下のレスポンスをjsonに変換するためにgsonを使用しています

[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}]

簡単で使いやすいpythonデコードのためにjsonにエンコードするより良い方法を理解するのを手伝ってください。ここでJavaのシリアル化が必要ですか? それが何を意味するのかはわかりませんが、私の質問が明確かどうか疑問に思っています.少なくとも正しいリソースを指摘するための助けは非常に役立ちます.

4

1 に答える 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.
于 2014-05-14T05:20:34.697 に答える