10
votes

Comment extraire un objet JSON qui est à l'intérieur d'un objet JSON

Convertir ceci: xxx

à ceci:

{"BLE89-A0-123-384": "3", "BLE10-A0- 123-321 ":" 4 "} c'est ... {id: quantité}

J'ai trouvé une réponse qui fait presque ce dont j'ai besoin: recherche d'un objet à l'intérieur du JSON . Mais cette réponse ne m'aidait pas car ce n'est qu'au premier niveau (un objet JSON). Mon problème est au deuxième niveau (objet JSON dans un objet JSON). Merci d'avance!


3 commentaires

{"BLE89-A0-123-384", "3"; "Ble10-A0-123-321", "4"} Ce n'est même pas un objet valide, il doit être une paire de valeur clé.


Qu'est-ce que ne vous savez comment faire? Savez-vous comment accéder à un membre d'un tableau ou d'un objet? Savez-vous comment itérer un tableau? Savez-vous comment créer un objet et assigner de nouvelles paires de clés / valeur? Il serait bon de savoir exactement ce que vous avez besoin d'aide.


@am pas je suis ... Je ne savais pas quel chemin je devais prendre pour aller du début à la fin.


3 Réponses :


0
votes

Vous devez effectuer ce qui suit:

var newJSON = {};
for (var i = 0; i < oldJSON.items.length; i++) {
  newJSON[oldJSON.items[i].id] = oldJSON.items[i].quantity;
}


1 commentaires

.length () doit être .Longueur . La longueur est une propriété non une fonction.



33
votes

Cela aide si vous ne pensez pas aux objets JSON en tant qu'objets JSON. Une fois que vous avez exécuté une chaîne JSON via JSON.PARSE, il s'agit d'un objet JavaScript natif.

en JavaScript, il y a deux façons d'accéder aux objets. P>

NOTATION DE DOT H1>

LE DOT La notation va comme ceci p>

myObject.name code> p>

Voir le point? Vous pouvez utiliser cela pour accéder à n'importe quel objet propriété em> (qui peut être un autre objet dans JavaScript, tant qu'il a un nom de notation de points valide). Vous ne pouvez pas utiliser de caractères comme - code>, . Code> et le caractère d'espace. P>

Notation de support (peut être un autre nom) h1> myObject ["nom de référence"] code> p>

comme notation de point, mais permet d'autres caractères, tels que - code> et le caractère spatial .. fait exactement la même chose chose. p>

Utiliser ces notations est utile car nous pouvons accéder aux propriétés imbriquées. P>

myobj.foo.bar.baz () Code> P>

Maintenant, passons à votre objet JSON ... p>

{"éléments": [{"id": "BLE89-A0-123-384", "Poids": "100", "Quantité": 3, "Stock": 0},
{"id": "Ble10-A0-123-321", "Poids": "100", "Quantité": 4, "Stock": 0}], Code> P>

Vous pourriez vouloir me brasser sur le format JSON vous-même, mais dans votre exemple, voici quelques indices ... P>

{ code> signifie le début d'un objet. (Gardez à l'esprit que toute votre chaîne JSON est un objet lui-même.) P>

} code> signifie la fin d'un objet. P>

"variable" (avec des citations! IMPORTANT EN JSON, mais pas lorsque vous accédez à des objets JavaScript) attribue une propriété à votre objet. p>

: code> est l'opérateur d'affectation en JSON et Objets JavaScript. Rien à droite du : code> est la valeur que vous attribuez à la propriété à gauche. P>

, code> signifie que vous démarrez une nouvelle propriété dans un objet. p>

Vous savez probablement que [] code> avec , code> virgules à l'intérieur signifie un tableau. p>

Quand nous exécutons votre chaîne via json.parse (chaîne) code>, nous obtiendrons un objet qui ressemble à ceci ... p>

var myResponse = json.parse (réponse); Code> p>

Vous pouvez maintenant l'utiliser comme objet JavaScript natif. Ce que vous recherchez est une propriété imbriquée dans les "articles". P>

varements var = myResponse.items; // sinon vous pouvez simplement utiliser myResponse.items code> p>

car éléments code> est un tableau d'objets em>, nous devrons itérer à travers Pour convertir l'objet existant en un nouvel objet. P>

{
    "BLE89-A0-123-384" : 3, //additional properties designated by comma
    "BLE10-A0-123-321" : 4 // The last key/value in an object literal CANNOT
    // have a comma after it!
}


1 commentaires

Wow, c'est une réponse beaucoup plus complète que prévu pour la question: D



2
votes

Vous pouvez essayer avec: xxx

quantités sera alors l'objet {"BLE89-A0-123-384": 3, "BLE10 -A0-123-321 ": 4} . foreach est une méthode native de Array Objets en JavaScript qui vous permet de parcourir leurs éléments. Vous voudrez peut-être mettre cette pièce de code à l'intérieur d'une fonction: xxx


0 commentaires