De manière récursive parsing JSON

J'ai un grand objet JSON que j'ai créé avec Python, et je suis besoin pour afficher les informations sur une page web maintenant. Mon problème est la taille de celui-ci; il y a des tableaux imbriqués et les objets à l'intérieur, et il est de plusieurs niveaux de profondeur dans les points. J'ai écrit un très inélégant (et buggy) fonction JavaScript pour tirer les données, mais cela semble être un appel récursif de problème pour moi, et malheureusement, je ne suis pas l'habitude de penser comme ça (encore).

Personne ne sait d'une bonne solution de analyse la lecture d'un tel objet? Mon but ici est vraiment de lire ce peu de façon dynamique, puisque je vais avoir à faire beaucoup plus de fois (et à chaque fois que l'objet sera différent, mais avec plus ou moins de la même structure). L'objectif est de prendre cette information et de montrer de manière significative sur une page web.

Laissez-moi savoir si je peux préciser davantage.

Edit: Voici l'objet. J'étais loin de mon ordinateur quand j'ai posté ceci, en plus il est plutôt grand. Des parties de ce qui pourrait être sensible, je l'ai sorti. Et je suis en utilisant le JSON2 d'analyser ce en autre chose qu'une chaîne de caractères. C'est juste la taille et nestiness c'est de me donner un problème.

{
"Loop300": [
{
"Loop310": [
{
"N1": {
"idCode": "0400", 
"idQual": "ZZ", 
"name": "REDACTED", 
"entIdCode": "SF"
}, 
"N3": [
{
"address1": "REDACTED", 
"address2": "REDACTED"
}
], 
"G61": [
{
"contactFunctionCode": "CN", 
"commNumber": "REDACTED", 
"commNumQualifier": "TE", 
"name": "shipping"
}
], 
"N4": [
{}
]
}
], 
"L11": [], 
"S5": {
"stopReasonCode": "LD", 
"stopSeqNum": "1"
}, 
"Loop350": [
{
"LAD": [], 
"OID": {
"weight": "161", 
"poNum": "ASDF", 
"weightCode": "L", 
"unitMeasure": "CA", 
"refID": "THING", 
"quantity": "6"
}, 
"Loop360": [
{
"Loop365": [], 
"L5": {
"lineNum": "1", 
"desc": "STUFF"
}
}
]
}, 
{
"LAD": [], 
"OID": {
"weight": "104", 
"poNum": "ZXMO", 
"weightCode": "L", 
"unitMeasure": "CA", 
"refID": "STUFF", 
"quantity": "6"
}, 
"Loop360": [
{
"Loop365": [], 
"L5": {
"lineNum": "2", 
"desc": "STUFF"
}
}
]
}, 
{
"LAD": [], 
"OID": {
"weight": "1833", 
"poNum": "ASDF", 
"weightCode": "L", 
"unitMeasure": "CA", 
"refID": "THEBLOB", 
"quantity": "40"
}, 
"Loop360": [
{
"Loop365": [], 
"L5": {
"lineNum": "3", 
"desc": "STUFF"
}
}
]
}, 
{
"LAD": [], 
"OID": {
"weight": "229", 
"poNum": "FDSA", 
"weightCode": "L", 
"unitMeasure": "CA", 
"refID": "BATMAN", 
"quantity": "6"
}, 
"Loop360": [
{
"Loop365": [], 
"L5": {
"lineNum": "4", 
"desc": "STUFF"
}
}
]
}
], 
"AT5": [], 
"G62": [
{
"date": "20100817", 
"datequalifier": "10"
}, 
{
"date": "20100817", 
"datequalifier": "38"
}
], 
"NTE": [
{
"refCode": "OTH", 
"desc": "No Touch"
}
]
}, 
{
"Loop310": [
{
"N1": {
"idCode": "9998000006", 
"idQual": "ZZ", 
"name": "REDACTED", 
"entIdCode": "SF"
}, 
"N3": [
{
"address1": "REDACTED"
}
], 
"G61": [
{
"contactFunctionCode": "CN", 
"commNumber": "REDACTED", 
"commNumQualifier": "TE", 
"name": "REDACTED"
}
], 
"N4": [
{}
]
}
], 
"L11": [], 
"S5": {
"stopReasonCode": "LD", 
"stopSeqNum": "2"
}, 
"Loop350": [
{
"LAD": [], 
"OID": {
"poNum": "QWERTY", 
"refID": "ASDF", 
"unitMeasure": "PL", 
"quantity": "1"
}, 
"Loop360": [
{
"Loop365": [], 
"L5": {
"lineNum": "1", 
"desc": "PORT"
}
}
]
}
], 
"AT5": [], 
"G62": [
{
"date": "20100817", 
"datequalifier": "10"
}, 
{
"date": "20100817", 
"datequalifier": "38"
}
], 
"NTE": [
{
"refCode": "OTH", 
"desc": "Driver Count Required"
}
]
}, 
{
"Loop310": [
{
"N1": {
"idCode": "9998000070", 
"idQual": "ZZ", 
"name": "PLACE", 
"entIdCode": "ST"
}, 
"N3": [
{
"address1": "PLACE"
}
], 
"G61": [
{
"contactFunctionCode": "CN", 
"commNumber": "XXXXXXXXXX", 
"commNumQualifier": "TE", 
"name": "X"
}
], 
"N4": [
{}
]
}
], 
"L11": [], 
"S5": {
"stopReasonCode": "UL", 
"stopSeqNum": "3"
}, 
"Loop350": [
{
"LAD": [], 
"OID": {
"poNum": "JOE", 
"refID": "SUPERMAN", 
"unitMeasure": "PL", 
"quantity": "1"
}, 
"Loop360": [
{
"Loop365": [], 
"L5": {
"lineNum": "1", 
"desc": "PORT"
}
}
]
}
], 
"AT5": [], 
"G62": [
{
"date": "20100817", 
"datequalifier": "68"
}, 
{
"date": "20100817", 
"datequalifier": "54"
}
], 
"NTE": [
{
"refCode": "OTH", 
"desc": "No Touch"
}
]
}, 
{
"Loop310": [
{
"N1": {
"idCode": "0000403803", 
"idQual": "ZZ", 
"name": "REDACTED", 
"entIdCode": "ST"
}, 
"N3": [
{
"address1": "REDACTED"
}
], 
"G61": [
{
"contactFunctionCode": "CN", 
"commNumber": "0000000000", 
"commNumQualifier": "TE", 
"name": "REDACTED"
}
], 
"N4": [
{}
]
}
], 
"L11": [
{
"qualifier": "DO", 
"refID": "THETHING"
}
], 
"S5": {
"stopReasonCode": "UL", 
"stopSeqNum": "4"
}, 
"Loop350": [
{
"LAD": [], 
"OID": {
"weight": "161", 
"poNum": "UIP", 
"weightCode": "L", 
"unitMeasure": "CA", 
"refID": "JACK", 
"quantity": "6"
}, 
"Loop360": [
{
"Loop365": [], 
"L5": {
"lineNum": "1", 
"desc": "STUFF"
}
}
]
}, 
{
"LAD": [], 
"OID": {
"weight": "104", 
"poNum": "JKLM", 
"weightCode": "L", 
"unitMeasure": "CA", 
"refID": "SUSAN", 
"quantity": "6"
}, 
"Loop360": [
{
"Loop365": [], 
"L5": {
"lineNum": "2", 
"desc": "STUFF"
}
}
]
}, 
{
"LAD": [], 
"OID": {
"weight": "1833", 
"poNum": "ASDF", 
"weightCode": "L", 
"unitMeasure": "CA", 
"refID": "JOE", 
"quantity": "40"
}, 
"Loop360": [
{
"Loop365": [], 
"L5": {
"lineNum": "3", 
"desc": "STUFF"
}
}
]
}, 
{
"LAD": [], 
"OID": {
"weight": "229", 
"poNum": "AAAA", 
"weightCode": "L", 
"unitMeasure": "CA", 
"refID": "ASDF", 
"quantity": "6"
}, 
"Loop360": [
{
"Loop365": [], 
"L5": {
"lineNum": "4", 
"desc": "STUFF"
}
}
]
}
], 
"AT5": [], 
"G62": [
{
"date": "20100817", 
"datequalifier": "68"
}, 
{
"date": "20100817", 
"datequalifier": "54"
}
], 
"NTE": [
{
"refCode": "OTH", 
"desc": "Driver Assist Required"
}
]
}
], 
"SE": {
"numSegments": "70", 
"controlNum": "0002"
}, 
"Loop100BT": [], 
"L11": [
{
"qualifier": "VD", 
"refID": "SALLY"
}, 
{
"qualifier": "SI", 
"refID": "MARK"
}, 
{
"qualifier": "CR", 
"refID": "JOE"
}, 
{
"qualifier": "RB", 
"refID": "USD"
}, 
{
"qualifier": "TH", 
"refID": "REDACTED"
}
], 
"PLD": [], 
"L3": {
"weight": "2328", 
"advances": "0", 
"rateQual": "FR", 
"charge": "05", 
"freightRate": "", 
"weightQual": "G", 
"quantity": "59"
}, 
"B2": {
"ordernum": "12345", 
"paymethod": "PP", 
"scac": "XXXX"
}, 
"Loop100VI": [
{
"N1": {
"name": "REDACTED", 
"entIdCode": "AA"
}, 
"G61": [
{
"contactFunctionCode": "CN", 
"commNumber": "REDACTED", 
"contactReference": "0563", 
"commNumQualifier": "TE", 
"name": "REDACTED"
}, 
{
"contactFunctionCode": "IC", 
"commNumber": "REDACTED", 
"commNumQualifier": "EM", 
"name": "REDACTED"
}, 
{
"contactFunctionCode": "ZZ", 
"name": "REDACTED"
}
]
}
], 
"G62": [
{
"date": "20100827", 
"timequalifier": "1", 
"datequalifier": "64", 
"time": "1302"
}
], 
"Loop100CB": [], 
"NTE": [
{
"refCode": "ZZZ", 
"desc": "26"
}, 
{
"refCode": "OTH", 
"desc": "No Touch"
}, 
{
"refCode": "OTH", 
"desc": "Driver Count Required"
}, 
{
"refCode": "OTH", 
"desc": "No Touch"
}, 
{
"refCode": "OTH", 
"desc": "Driver Assist Required"
}
], 
"B2A": {
"purpose": "00"
}, 
"N7": [
{
"equipLength": "4800", 
"equipHeight": "0", 
"weight": "2328", 
"equipWidth": "0", 
"equipNum": "ZZZZ", 
"equipType": "TV", 
"weightQual": "G"
}
]
}

Grâce,
T. J.

Hey @tjsimmons, pouvez-vous nous montrer la structure de votre JSON?
Does anyone know of a good solution to parsing such an object? Montrant de l'objet peut aider.
Ne pas JSON.parse() travail?
seulement sur les nouveaux navigateurs. si vous souhaitez dépendent JSON vous sont les suivantes json2.js.
wow mec.. c'est certains json seule une mère pourrait aimer....

OriginalL'auteur tjsimmons | 2010-11-05