2012-12-17 14 views
14

पर अतिरिक्त \ और "" जोड़ना हाय नमस्ते मैं जावास्क्रिप्ट का उपयोग करके एक कुंजी के साथ ऑब्जेक्ट की एक सरणी और निम्न कोड का उपयोग कर मूल्य बना रहा हूं।JSON.stringify के साथ समस्या मेरे जेसन ऑब्जेक्ट

ValuesArray.push({ key: $(this).attr('someattribute'), value: $(this).val() }); 

नतीजतन मैं इस तरह वस्तु का बजे सरणी है:

key:29; value: 'Country' 
Key:12; value: '4,3,5' 

जब मैं यह stringify और भेज कि JSON एक पोस्ट में मैं \ के साथ एक गलत स्वरूपित JSON हो रहा है करने के लिए कोशिश कर रहा हूँ और "स्थानों में मैं इतना चाहता हूँ जब मैं desirales है कि JSON। साथ सी # मैं मुसीबत हो रहा है codebehind पर एक JObject मैं अब stringify

var jObject = JSON.stringify(ValuesArray); 

मेरे JSON का उपयोग कर एक साफ JSON बना सकते हैं कैसे जो गलत है के रूप में की कोशिश न कि है:

{ 
    "JObject": "[{\"key\":\"29\",\"value\":\"Country\"}, {\"key\":\"30\",\"value\":\"4,3,5\"}]" 
} 

मैं [] आसपास उद्धरण और चरित्र \

कोई अच्छा विचार इसे हल करने के बिना इस

{ 
    "JObject": [{"key":"29","value":"Country"},{"key":"30","value":"4,3,5"}] 
} 

की तरह एक JSON वस्तु है करना चाहते हैं।

आप

अधिक इस विस्तार मैं अपने एपीआई को JSON भेज रहा हूँ धन्यवाद यह है कि कैसे मैं अपने वेब एपीआई के लिए JSON भेज रहा हूँ:

function PostAPIRequest(address) { 

      var jObject = JSON.stringify(ValuesArray); 

      var responseJson = null; 
      $.ajax({ 
       url: address, 
       type: 'POST', 
       dataType: 'json', 
       data: { JObject: jObject }, 
       success: function (data) { 
        responseJson = data 
        ProcessDataResponse(responseJson); 
        //TODO: REFRESH THE DATA GRID 
       }, 
       error: function (xhr, ajaxOptions, thrownError) { 
        //TODO redirect to the error page and send error email there. 
        alert(xhr.status); 
        alert(thrownError); 
       } 
      }) 
     } 

और इस मैं इसे कैसे प्राप्त कर रहा मेरी एपीआई नियंत्रक में

... // पोस्ट API/datavalues ​​/ 5

सार्वजनिक स्ट्रिंग पोस्ट (पूर्णांक आईडी, JObject मूल्य) { var temp = value;

...

उत्तर

14

ऐसा लगता है कि आप अपने नक्शे में मूल्य के रूप में एक स्ट्रिंग दे रहे हैं। - ध्यान दें कि आपके "अवैध" JSON मूल्य वास्तव में JSON स्ट्रिंग के बजाय सरणी जो आप चाहते है

var objMap = {"JObject" : ValuesArray}; var json = JSON.stringify(objMap)

क्या हो रहा है आप डबल json अपने मूल्यों सरणी एन्कोडिंग हो रहा है: आप की तरह कुछ करना चाहिए।

EDIT ऐसा लगता है कि आप नक्शे के JSON तारों में एक ऐरे में चिपके हुए हैं और फिर इसे स्ट्रिंग कर रहे हैं। यहाँ एक jsfiddle मदद करनी चाहिए कि आप आप के लिए क्या देख रहे मिलता है - http://jsfiddle.net/4G5nF/

अपनी पोस्ट अनुरोध में, यह

var jObject = {"JObject" : ValuesArray}; 
$.ajax({ url: address, 
      type: 'POST', 
      dataType: 'json', 
      data: jObject, 
      success: function (data) { .. }}); 

नोट डेटा विशेषता में परिवर्तन का प्रयास करें। यह एक मान है जो स्वचालित रूप से आपके लिए JSONified है।

+0

धन्यवाद एस.बी. लेकिन यह यह इस JSON बनाने फ्लॉप काम { "{\" जॉब्जेक्ट \ ":": { "{\" कुंजी \ ": \" 20 \ ", \" मान \ ": \" ddd \ "}, {\" key \ ": \" 21 \ ", \" मान \ ": \" 4,5,13,14,15, \ "}]}": " } } मुझे अभी भी अक्षर हैं \ और कोई वैध JSON deserialize के लिए स्वरूपित नहीं है मेरे वेब एपीआई में – Devsined

+0

धन्यवाद जो काम करता है :) – Devsined

+0

यह दिलचस्प है कि अब मुझे एक साफ JSON मिल गया है लेकिन बहुत सारी जगहें हैं और लाइन वापसी – Devsined

8

क्या आपके पास पुरानी prototype लाइब्रेरी हो सकती है। मैं इसे हटाने के रूप में, बग गायब हो गया है

+0

में बदल देता है यह संबंधित है: http : //stackoverflow.com/questions/710586/json-stringify-array-bizarreness-with-prototype-js –

2
const config = {a: 1, b: 2} 
console.log(JSON.stringify(JSON.stringify(config))) 

"{\" एक \ ": 1, \" ख \ ": 2}"

संबंधित मुद्दे