2014-05-09 1 views
1

J'utilise snmp4j pour faire un SNMP Le résultat de la marche doit être envoyé à un client pour le décoder en python pour une analyse plus poussée. Je suis nouveau à json et j'ai besoin d'aider à connaître les meilleures façons de convertir les types de données java en json afin qu'il puisse être facilement décodé en python. Je ne suis pas sûr si cela peut être décodé dans les dicts ou les listes appropriés, mais toute aide pour ce faire sera utile. Actuellement, je suis en utilisant gson pour convertir ci-dessous resonse JSONCréer json dans java et analyser en python?

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

et ci-dessous est le résultat quand je fais 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}] 

s'il vous plaît aider à comprendre de meilleures façons de coder en JSON pour python facile et utilisable décode La sérialisation java est-elle requise ici? Je ne suis pas sûr de ce que cela signifie, mais je me demande toujours si ma question est claire, toute aide, au moins pour me signaler les bonnes ressources sera d'une grande aide.

+0

votre question est probablement: comment puis-je créer une représentation json personnalisée d'un objet en utilisant gson (en Java). La partie Python est toujours juste 'json.loads()' - rien d'intéressant. Bien sûr, vous pouvez aussi post-traiter le json en Python pour obtenir le même résultat: faites défiler le résultat et convertissez-le en n'importe quelle structure. – jfs

+0

le post-traitement n'est pas judicieux si nous pouvons le structurer bien en json avant d'envoyer, car il doit évoluer. Oui, j'utilise gson mais je ne sais pas vraiment s'il y a des façons standard d'encoder ou j'ai besoin d'un custom. – RAFIQ

+0

C'est pourquoi je l'ai suggéré comme dernier choix. Vous avez l'option: si cela fonctionne ou non dans votre cas particulier est jusqu'à vous. Si Java est le seul producteur et que le code Python est le seul consommateur, il peut être beaucoup plus simple de manipuler les données en Python puis en Java (votre cas peut être différent) – jfs

Répondre

0

Une bonne solution est d'utiliser HashMap dans java qui, une fois converti en json, peut être facilement décodé comme un dictionnaire sans aucune manipulation. Donc voici comment je l'ai fait

//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.