2017-10-20 222 views
0

我有json數據,我通過handlebars.js解析它 但是我得到的輸出不完全是應該在它的相同順序JSON。 的json代碼:Handlebars.js/JSON解析:從json解析的數據不是爲了

"RiskModel":{ 
     "RiskModel":[ 
      { 
        "ScoreFactors":{ 
        "34":"Total of all balances on bankcard or revolving accounts is too high", 
        "12":"The date that you opened your oldest account is too recent", 
        "39":"Available credit on your open bankcard or revolving accounts is too low", 
        "04":"The balances on your accounts are too high compared to loan amounts" 
       } 
      } 
     ] 
     } 

我的HTML代碼:

{{#arf.RiskModel.RiskModel}} 
{{#each ScoreFactors}} 
<li>{{this}} </li> 
    {{/each }} 
{{/arf.RiskModel.RiskModel}} 

我的輸出如下所示:

THE DATE THAT YOU OPENED YOUR OLDEST ACCOUNT IS TOO RECENT 
TOTAL OF ALL BALANCES ON BANKCARD OR REVOLVING ACCOUNTS IS TOO HIGH 
AVAILABLE CREDIT ON YOUR OPEN BANKCARD OR REVOLVING ACCOUNTS IS TOO LOW 
THE BALANCES ON YOUR ACCOUNTS ARE TOO HIGH COMPARED TO LOAN AMOUNTS 

「12」 值被首先顯示,然後 「34」 值。

我不知道爲什麼。

我可以知道原因嗎?

我該如何解決這個問題?

按照建議轉換爲數組後編輯: 我得到的輸出與之前相同。 output after converting obj into array

+0

您可以將JSON重構爲「ScoreFactors」:[{「Score」:「12」,「Text」:「some text」},{...},{...}]? – Chad

+0

@Chad我從ajax調用中獲得這個json。 – JSnewbie

+0

@Chad我如何重構JSON。你能幫我解決嗎? – JSnewbie

回答

0

ScoreFactors是一個具有四個屬性「34」,「12」,「39」,「04」的javascript對象。 javascript對象中的屬性沒有任何順序,因此當迭代每個對象時,其他人甚至可能會得到四個句子的另一個順序。

  • 你需要使用一個數組,保持完好的順序:

    「ScoreFactors」:
    「上銀行卡或旋轉賬戶的所有餘額總計太高」, 「的日期你打開你的最古老的帳戶太新」, ‘你的銀行卡開或循環賬戶可用信用額度過低’, ‘您帳戶的餘額過高相比,貸​​款金額’ ]

  • 如果您還需要多少價值,你必須使用對象數組裏面:

    「ScoreFactors」:
    {「民」:「34」,「文」:「關於銀行卡的所有餘額合計或循環帳戶太高「}, {」num「:」12「,」text「:」您打開最舊帳戶的日期太近了「}, {」num「:」39「,」text 「:」您的開放銀行卡或循環賬戶的可用信用太低「}, {」num「:」04「,」text「:」您的賬戶餘額與貸款金額相比太高「} ]

    <li>{{num}} {{text}} </li>

+0

你能給我一個與js小提琴的例子我怎麼能改變以上json在handlebars.js中使用數組? 我不需要數字值。 – JSnewbie

+0

這不起作用。請檢查編輯過的代碼並輸出 – JSnewbie

+0

將「ScoreFactors」從一個對象變成一個數組: https://jsfiddle.net/veraee/fg4srjo5/5/ –