2015-04-21 3 views
-3

У меня возникли проблемы с попыткой получить мой вложенный объект в цикл. Проблема в том, что он даже не попадает в цикл, например, нет никаких значений для прокрутки. Я просмотрел несколько сообщений и попробовал то, что они должны были сказать, и это даже не входит в цикл. Ниже приведен код, который я использую, любая помощь была бы потрясающей.Итерация через вложенный объект JSON

// json string being parsed 
var objString = '{ "error": "no crontab for ec2-user "}}{ "accounts" : { "demo": { "Name": "Your Medical Clinic", "groupid": "demo", "CallerID": "8664738160", "CallerID_err": "OK", "TransferPhone": "1-931-555-1212", "TransferPhone_err": "INVALID LENGTH", "TimeZone": "EST", "EMRSoftware": "Greenway", "merlin": 1, "prm": 1, "CallDaysOut": 2, "EmailDaysOut": 5, "enablevoice": 1, "enabletext": 1, "enablemail": 1, "Exclude": "12 Months,12-17 Years,18+ Years,2 Months,", "emailBtnConfirm": 1, "emailBtnReschedule": 1, "emailBtnCancel": 1, "enablenoshow": 1, "enablecollection": 0, "enablerecall": 1, "enableapptalert": 1, "AppendCallerID": "Confirm,Cancel,Resched,AnsMach", "EmailReport": "[email protected],[email protected],[email protected]", "EmailReport_err": "OK", "SurveyReport": "[email protected]", "SurveyReport_err": "OK", "HMReport": "[email protected],[email protected]", "HMReport_err": "OK", "ApptReminders" : { "cronCalls": { "cronCalls_570": { "StartHour": 18, "StartQtrHour": 0, "StartTime_local": "7:00 PM EST", "EndHour": 19, "EndQtrHour": 0, "EndTime_local": "8:00 PM EST", "CallDays": "MoTuWeThFr" } }, "cronEmail": { "cronEmail_110": { "hour": 18, "qtrhour": 99, "StartTime_local": "INVALID EST", "ApptTimeMath": "", "EmailDays": "MoTuWeThFr" } }, "cronSMS": { "cronSMS_82": { "hour": 7, "qtrhour": 0, "StartTime_local": "8:00 AM EST", "DaysOut": 0, "cronargid": 1, "cronargid_type": "frombulk", "ApptTimeMath": "", "WorkDays": "MoTuWeThFr", "SendOnDays": "TuWeThFr", "cronSMS_err": "OK" } } }, "HealthMaint" : { "cronHMCalls": { "cronHMCalls_2": { "StartHour": 12, "StartQtrHour": 0, "StartTime_local": "1:00 PM EST", "EndHour": 16, "EndQtrHour": 0, "EndTime_local": "5:00 PM EST", "ActiveDays": "MoTuWeFrSa" } }, "cronHMEmail": { "cronHMEmail_1": { "hour": 3, "qtrhour": 3, "StartTime_local": "4:45 AM EST", "ActiveDays": "ThFrSa" } }, "cronHMSMS": { "cronHMSMS_1": { "hour": 2, "qtrhour": 2, "StartTime_local": "3:30 AM EST", "ActiveDays": "SuTuThSa" } } }, "MDPay" : { "cronMDPayCalls": { "cronMDPayCalls_2": { "hour": 15, "qtrhour": 3, "StartTime_local": "4:45 PM EST", "ActiveDays": "MoWeFr" } }, "cronMDPayEmail": { "cronMDPayEmail_2": { "hour": 13, "qtrhour": 1, "StartTime_local": "2:15 PM EST", "ActiveDays": "MoFr" } }, "cronMDPaySMS": { "cronMDPaySMS_2": { "hour": 15, "qtrhour": 1, "StartTime_local": "4:15 PM EST", "ActiveDays": "Su" } } }, "NoShow" : { "cronNoShowCalls": { } }, "Recall" : { "cronRecallCalls": { "cronRecallCalls_4": { "Hour": 11, "QtrHour": 0, "StartTime_local": "12:00 PM EST", "ActiveDays": "MoTuWeThFr" } } }, "cronEmailReports": { "cronEmailReport_155": { "hour": 20, "qtrhour": 1, "StartTime_local": "9:15 PM EST", "DaysOut": 4, "csv": 1, "reportargid": 3, "reportargid_type": "calltime", "WorkDays": "SuMoTuThFrSa", "SendOnDays": "MoTuWeThFr" } }, "CallCntNotStatus99": 3680, "crontab": { }, "IncomingFiles": { "file_1": "payments.json", "file_1_changed": "2015-04-08 10:44", "file_1_lines": 222, "file_2": "recall.csv", "file_2_changed": "2014-04-17 08:58", "file_2_lines": 0, "file_3": "elerts.txt", "file_3_changed": "2014-12-11 14:14", "file_3_lines": 21, "file_4": "noshow.csv", "file_4_changed": "2014-04-17 08:44", "file_4_lines": 0, "file_5": "daily.txt", "file_5_changed": "2014-10-29 12:50", "file_5_lines": 188, "file_6": "bulk.csv", "file_6_changed": "2014-10-20 14:41", "file_6_lines": 1 } } }}'; 

Функция зацикливания через объект

// example code to loop through object 
var jsontext = objString.replace('{ "error": "no crontab for ec2-user "}}', '').trim(), 
    obj = JSON.parse(jsontext); 

console.log(obj); 

if(typeof obj !== 'object') console.log('error'); return false; 

// top level loop 
$.each(obj, lp); 

function lp(key, val) { 
    // render table 
    console.log(key); 
    console.log(val); 

    // recursion for children 
    if(val !== null && typeof val === "object") 
     $.each(val, lp); 
} 

Demo Fiddle

+0

если заявления должны быть заключены в фигурные скобки –

+0

@unikorn: Это выбор стиля, а не требование синтаксиса. – Guffa

+3

@guffa - нет, если он изменит логику - как и выше. – McAden

ответ

8

Это потому, что ваша единственная линия if заявление. Если опустить фигурные скобки, только первая строка является частью оператора, поэтому return false; в настоящее время выполняется каждый раз:

С разрывы строк вы можете увидеть свою ошибку:

if(typeof obj !== 'object') 
    console.log('error'); 

return false; 

//Bunch of code that never gets hit 
+0

Я думаю, что причина, по которой я пропустил это, заключается в том, что console.log ('error') не был в исходном коде, поэтому перед ним это было только return false. Не могу поверить, что я совершу эту ошибку xD – jamadri

Смежные вопросы