2016-03-30 5 views
0

I ein JSON Objekt eine Hierarchie von digitalen Wallets darstellt:Wie passieren JSON Objekt zu einem JavaScript-Funktion

masterWallets = {wallet: {}, childs: [{}, {}, ..., {}]} 

das Array von Childs anderen Wallets sind, wo andere Wallets enthält ... (wie eine Feile System).

Hier ist meine HTML-Tabelle:

<% masterWallets.forEach(function(masterWallet) { %> 
     <tr> 
     <td>masterWallet.wallet.walletName</td> 
     <td><%= JSON.stringify(masterWallet.childs) %></td> 
     <td> 
      <script> 
      document.write(window.getChilds(<%= masterWallet.childs %>)); 
      </script> 
     </td> 
     </tr> 
<% }); %> 

Ich mag würde das Array von Kindergeldbörsen (masterWallet.childs) an eine Funktion zu übergeben und extrahieren und einige Infos zu drucken. Ich kann alle Kinder mit sehen: <% = JSON.stringify (mWallet.childs)%> Aber ich kann diese Variable nicht an meine Funktion übergeben. Ich habe in der JavaScript-Konsole:

document.write(window.getChilds([object Object],[object Object])); 

mit diesem Fehler:

Uncaught SyntaxError: Unexpected identifier 

Frage: Wie gebe ich ein JSON-Objekt (oder ein Array von JSON-Objekten?) Auf eine Funktion?

+1

Sie sollten die 'JSON String' dann analysieren es passieren mit' Javascript' ... – brso05

+1

Haben Sie versucht, 'window.getChilds (<% = JSON.stringify (masterWallet.childs) %>) '? – apsillers

+0

"JSON-Objekt" ist ein Widerspruch. Wenn es JSON ist, dann ist es eine Zeichenfolge. Wenn es ein Objekt ist, dann ist es nicht JSON. –

Antwort

0

If your masterWallets is an object of wallet and childs then; 
 

 
    masterWallets = {wallet: {}, childs: [{wallet:{},childs[{}...{n}]}, ..., {n}]} 
 
<% masterWallets.childs.forEach(function(wallet) { %> 
 
     <tr> 
 
     <td>masterWallets.wallet.walletName</td> 
 
     <td><%= JSON.stringify(wallet.childs) %></td> 
 
     <td> 
 
      <script> 
 
      document.write(window.getChilds(<%= wallet.childs %>)); 
 
      </script> 
 
     </td> 
 
     </tr> 
 
<% }); %> 
 

 
But if your masterWallets is a collection of wallets then; 
 

 
masterWallets = {{wallet: {}, childs: [{}, {}, ..., {n}]},{wallet: {}, childs: [{}, {}, ..., {n}]}}; 
 
<% masterWallets.forEach(function(walletObj) { %> 
 
     <tr> 
 
     <td>walletObj.walet.walletName</td> 
 
     <td><%= JSON.stringify(walletObj.childs) %></td> 
 
     <td> 
 
      <script> 
 
      document.write(window.getChilds(<%= walletObj.childs %>)); 
 
      </script> 
 
     </td> 
 
     </tr> 
 
<% }); %>

+0

Die zweite Option ist richtig: masterWallets ist eine Sammlung (Array) von Brieftaschen – jfjobidon

+1

Können Sie eine [Geige] (https://jsfiddle.net/) erstellen? So können wir im Debugger debuggen. –

+0

Wenn ich das tue: <% = walletObj.childs%> es wird durch eine Zeichenkette ersetzt: "[Objekt Objekt], [Objekt Objekt]" (in der Funktion drucke ich den TypOf und es gibt mir String) Wenn ich JSON .stringify (mWallet.childs) Die Daten sind stringify und alle Anführungszeichen werden durch " ersetzt. Also, in meiner Funktion habe ich die Anführungszeichen wiederhergestellt und dann habe ich JSON.parse und ich habe das JSON-Objekt zurück. Jetzt funktioniert es! Es ist möglich, das JSON-Objekt direkt an die Funktion zu übergeben? – jfjobidon

Verwandte Themen