2012-11-26 13 views
5

की उम्मीद कर रहा था मुझे जैक्सन पार्सर, AJAX और jquery के माध्यम से नियंत्रक के लिए ऑब्जेक्ट्स की एक सरणी गुजरने में समस्या हो रही है।जैक्सन पार्सर: अपरिचित टोकन 'tieheT': 'शून्य', 'सत्य' या 'झूठी'

मेरे नियंत्रक इस तरह दिखता है:

@RequestMapping(value="/saveTimeBooking") 
public @ResponseBody ReturnTO saveTimeBooking(@RequestBody TimesheetTO timesheetTO[]) { 
    // ... 
} 

मेरे जावा ऑब्जेक्ट TimesheetTO इस तरह दिखता है: नियंत्रक को timesheet ऑब्जेक्ट की श्रेणी पारित करने के लिए

public class TimesheetTO implements Serializable { 
    private static final long serialVersionUID = 1L; 

    private int activityMasterId; 
    private String name; 

    private BigDecimal mondayEffort=new BigDecimal(0); 
    private BigDecimal tuesdayEffort=new BigDecimal(0); 
    private BigDecimal wednesdayEffort=new BigDecimal(0); 
    private BigDecimal thursdayEffort=new BigDecimal(0); 
    private BigDecimal fridayEffort=new BigDecimal(0); 
    private BigDecimal saturdayEffort=new BigDecimal(0); 
    private BigDecimal sundayEffort=new BigDecimal(0); 
    public int getActivityMasterId() { 
     return activityMasterId; 
    } 
    public String getName() { 
     return name; 
    } 
    public BigDecimal getMondayEffort() { 
     return mondayEffort; 
    } 
    public BigDecimal getTuesdayEffort() { 
     return tuesdayEffort; 
    } 
    public BigDecimal getWednesdayEffort() { 
     return wednesdayEffort; 
    } 
    public BigDecimal getThursdayEffort() { 
     return thursdayEffort; 
    } 
    public BigDecimal getFridayEffort() { 
     return fridayEffort; 
    } 
    public BigDecimal getSaturdayEffort() { 
     return saturdayEffort; 
    } 
    public BigDecimal getSundayEffort() { 
     return sundayEffort; 
    } 
    public void setActivityMasterId(int activityMasterId) { 
     this.activityMasterId = activityMasterId; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 
    public void setMondayEffort(BigDecimal mondayEffort) { 
     this.mondayEffort = mondayEffort; 
    } 
    public void setTuesdayEffort(BigDecimal tuesdayEffort) { 
     this.tuesdayEffort = tuesdayEffort; 
    } 
    public void setWednesdayEffort(BigDecimal wednesdayEffort) { 
     this.wednesdayEffort = wednesdayEffort; 
    } 
    public void setThursdayEffort(BigDecimal thursdayEffort) { 
     this.thursdayEffort = thursdayEffort; 
    } 
    public void setFridayEffort(BigDecimal fridayEffort) { 
     this.fridayEffort = fridayEffort; 
    } 
    public void setSaturdayEffort(BigDecimal saturdayEffort) { 
     this.saturdayEffort = saturdayEffort; 
    } 
    public void setSundayEffort(BigDecimal sundayEffort) { 
     this.sundayEffort = sundayEffort; 
    } 

    public TimesheetTO(){} 

    public TimesheetTO(String activityMasterId, 
         String name, 
         String mondayEffort, 
         String tuesdayEffort, 
         String wednesdayEffort, 
         String thursdayEffort, 
         String fridayEffort, 
         String saturdayEffort, 
         String sundayEffort) 
    { 
     this.activityMasterId=Integer.parseInt(activityMasterId); 
     this.name=name; 
     this.mondayEffort=BigDecimal.valueOf(Double.parseDouble(mondayEffort)); 
     this.tuesdayEffort=BigDecimal.valueOf(Double.parseDouble(tuesdayEffort)); 
     this.wednesdayEffort=BigDecimal.valueOf(Double.parseDouble(wednesdayEffort)); 
     this.thursdayEffort=BigDecimal.valueOf(Double.parseDouble(thursdayEffort)); 
     this.fridayEffort=BigDecimal.valueOf(Double.parseDouble(fridayEffort)); 
     this.saturdayEffort=BigDecimal.valueOf(Double.parseDouble(saturdayEffort)); 
     this.sundayEffort=BigDecimal.valueOf(Double.parseDouble(sundayEffort)); 
    } 
} 

और, मैं निम्नलिखित jQuery कोड का उपयोग कर रहा :

var datacounter=0; 
/*var totalcount=0;*/ 
var timesheetTO = new Array(); 

$("#timeSheetTableId input[id^=activityMasterId]").each(function() { 
     $('#activityMasterId_'+datacounter).removeAttr('disabled'); 
     $('#name_'+datacounter).removeAttr('disabled'); 

     timesheetTO.push({ 
      "activityMasterId": $('#activityMasterId_'+datacounter).val(), 
      "name": $('#name_'+datacounter).val(), 
      "mondayEffort": new Integer($('#mondayEffort_'+datacounter).val()), 
      "tuesdayEffort": $('#tuesdayEffort_'+datacounter).val(), 
      "wednesdayEffort": $('#wednesdayEffort_'+datacounter).val(), 
      "thursdayEffort": $('#thursdayEffort_'+datacounter).val(), 
      "fridayEffort": $('#fridayEffort_'+datacounter).val(), 
      "saturdayEffort": $('#saturdayEffort_'+datacounter).val(), 
      "sundayEffort": $('#sundayEffort_'+datacounter).val() 
     }); 
     datacounter=datacounter+1; 
}); 

var url = contextRoot + "timesheet/saveTimeBooking.htm"; 
$.ajax({ 
    type : 'POST', 
    url : url, 
    async : false, 
    timeout : 5000, 
    contentType: 'application/json', 
    dataType: 'json', 
    data : { 
     timesheetTO : JSON.stringify(timesheetTO) 
    }, 
    success : function(data, textStatus) { 
     alert('successful'); 

    }, 
    error : function(xhr, textStatus, errorThrown) { 
     alert('request failed in saving timesheet:' + errorThrown + " " + textStatus + " " 
       + xhr.toString()); 
    } 
}); 

सबमिट करते समय, मुझे ऊपर दी गई त्रुटि मिल रही है: जैक्सन पार्सर अपवाद: अपरिचित टोकन 'tieheT': 'शून्य', 'true' या 'false' की उम्मीद कर रहा था

मैं क्या गलत कर रहा हूं .. क्या इसे ठीक करने का कोई तरीका है?

[{"activityMasterId":"1","name":"Financial Implications","mondayEffort":"0","tuesdayEffort":"0","wednesdayEffort":"0","thur‌​sdayEffort":"0","fridayEffort":"0","saturdayEffort":"0","sundayEffort":"0"},{"act‌​ivityMasterId":"2","name":"Cost estimation","mondayEffort":"0","tuesdayEffort":"0","wednesdayEffort":"0","thursd‌​ayEffort":"0","fridayEffort":"0","saturdayEffort":"0","sundayEffort":"0"}] 
+0

क्या JSON.stringify (timesheetTO) में डेटा कैसा दिखता है? – anderssonola

+0

ऐसा लगता है: [{"गतिविधिमास्टरआईडी": "1", "नाम": "वित्तीय प्रभाव", "सोमवार प्रयास": "0", "tuesdayEffort": "0", "wednesdayEffort": "0", " thursdayEffort ":" 0 "," fridayEffort ":" 0 "," शनिवार प्रयास ":" 0 "," sundayEffort ":" 0 "}, {" गतिविधिमास्टर आईडी ":" 2 "," नाम ":" लागत अनुमान ", "mondayEffort": "0", "tuesdayEffort": "0", "wednesdayEffort": "0", "thursdayEffort": "0", "fridayEffort": "0", "saturdayEffort": "0", "sundayEffort ":" 0 "}] – Saket

+0

मुझे इस पोस्ट पर समाधान मिला http://stackoverflow.com/questions/9726366/server-unable-to-parse-a-valid-json (संभावित डुप्लिकेट) – lekant

उत्तर

2

आप सत्यापित करें कि आप मान्य JSON खिला रहे हैं की जरूरत है::

यहाँ JSON.stringify का परिणाम है त्रुटि संदेश बताता है यह स्थिति नहीं है। यह आपको सटीक रेखा और पंक्ति संख्या भी देनी चाहिए, जिसका उपयोग आप इनपुट JSON के साथ समस्या को खोजने के लिए कर सकते हैं। संदेश से, मैं अनुमान लगा रहा हूं कि या तो संपत्ति के नाम उद्धृत नहीं किए जा रहे हैं, या कुछ स्ट्रिंग मान उद्धृत नहीं किए गए हैं।

2

मैं ने वही समस्या का सामना करना पड़ा और अब यह ठीक काम कर रहा है। समस्या हो सकती है

data : { 
     timesheetTO : JSON.stringify(timesheetTO) 
    } 

डबल में यह लगा उद्धरण

data : { 
     ' "timesheetTO" : " '+JSON.stringify(timesheetTO)+' " ' 
    } 
संबंधित मुद्दे