Prettify JSON对象警报

时间:2017-03-16 09:45:30

标签: javascript json

我有一个JSON对象,当我提醒它时,我得到了这个:

enter image description here

我希望得到这个:

enter image description here

function getNameById(id){
    return usersArray.find(item => item.id === id).name;
}

var usersArray = [
										{"id":"135","name":"Jenny"},
                    {"id":"162","name":"Kelly"}
                 ];
$("#submit").click(function (e) {           
    var errors = {};
    
    $(".validation").each(function(){
       var worker_id = $(this).attr('id').replace(/[^\d]/g, '');
       var w_name = getNameById(worker_id);
       if(!errors[w_name]) errors[w_name] = [];
       if ( $(this).val() == "" ) {
           errors[w_name].push( $(this).attr('id').replace(/[^a-zA-Z]/g, '') + " must be filled!");
           //errors[w_name].push("second number must be smaller than first");
       }
       if ( $(this).attr('id') == "second-"+worker_id  && ($(this).val() > $('#first-'+worker_id+'').val())) {
        	errors[w_name].push("second number must be smaller than first");
       }     
    });
    
    alert(JSON.stringify(errors, null, 2));
    e.preventDefault();
    e.stopPropagation();

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form method="post">
  First<input id="first-135" class="validation" name="first" type="text" value="5"><br>
  Second<input id="second-135" class="validation" name="second" type="text" value="8"><br>
  Signature<input id="signature-135" class="validation" name="signature" type="text"><br>
<input id="submit" type="submit" value="Submit">
</form>
我怎样才能实现这一目标?

3 个答案:

答案 0 :(得分:2)

将您的对象转换为像这样的字符串

let obj = {
  "Jenny" : [
    "Second number must be smaller than first",
    "Signature must be filled !"
  ]
};

let str = "";
Object.keys(obj).forEach(k => {
  str += k + ":\n";
  str += obj[k].join(",\n");
});

console.log(str);

答案 1 :(得分:1)

errors中的JSON数据中提取数据,而不是直接运行JSON.stringify。您应该能够获得如下数据:errors["Jenny"]以获取错误列表。然后根据自己的喜好将它们组合成一个字符串。

答案 2 :(得分:0)

老实说,我认为你的问题与JSON完全无关。一些JSON甚至出现的唯一原因是因为您为alert()生成了它:

alert(JSON.stringify(errors, null, 2));
   // ^^^^^^^^^^^^^^ This generates JSON

如果要连接某些数组项,可以使用concatenation operator (+)Array.join()的组合:

alert(w_name + ":\n" + errors[w_name].join(",\n"));

根据自己的喜好调整格式。

&#13;
&#13;
var w_name = "Jenny";
var errors = {};

errors[w_name] = [];
errors[w_name].push("Second number must be smaller than first");
errors[w_name].push("Signature must be filled!");

alert(w_name + ":\n" + errors[w_name].join(",\n"));
&#13;
&#13;
&#13;