2012-12-17 9 views
14

Merhaba Javascript kullanarak, aşağıdaki kodu kullanarak bir anahtar ve bir değer içeren bir nesne dizisi oluşturuyorum. Bunun sonucundaJSON.stringify ile Json nesnesine ek bir ve "" ekleyerek sorun.

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

böyle nesnenin am dizi var:

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

bunu stringify ve JSON bir yayında istiyorum \ ile yanlış biçimlendirilmiş JSON yaşıyorum o göndermeye çalışıyorum ve "yerlerde ben yanlış olduğunu şimdi stringify

var jObject = JSON.stringify(ValuesArray); 

Benim JSON kullanarak temiz bir JSON oluşturabilir nasıl sorun yaşıyorum C# kod-behind üzerinde bir JObject. olarak JSON olduğunu desirales çalıştığınızda bu yüzden istemiyorum demek geçerli:

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

Ben [] etrafında tırnak ve karakter \

bunu çözmek için herhangi bir iyi bir fikir olmadan bu

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

gibi bir JSON nesnesi istiyorum.

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); 
       } 
      }) 
     } 

ve bu onu nasıl alıyorum:

benim Web API JSON gönderiyorum böyle mi size benim API için JSON gönderiyorum bu nasıl

Daha detay ederiz benim API denetleyicisi

... // POST API/datavalues ​​/ 5

kamu dize Mesaj (int id, JObject değeri) { var temp = value;

... Eğer haritasında değeri olarak bir dize yerleştirerek Görünüşe

cevap

14

. - senin "geçersiz" JSON değeri aslında bir JSON dizesi yerine istediğiniz dizi olduğuna dikkat neler oluyor

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

Eğer değerler dizisini kodlayan çift json vardır şudur: Böyle bir şey yapmak gerekir.

EDIT Haritaların JSON dizelerinde bir Diziye yapışıp ardından dizgileriniz gibi görünüyor. Burada aradığınızı yardımcı gereken bir jsfiddle var - yayınınız istekte http://jsfiddle.net/4G5nF/

, bu

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

Not Ekle veri özelliğinde değişiklik deneyin. Bu sizin için otomatik olarak JSONified değeridir.

+0

Teşekkür SB ama buna bu JSON oluşturmak işe yoktu { "{\" JObject \ ":": { "{\" anahtar \ ": \" 20 \ ", \" değer \ ": \" ddd \ "}, {\" key \ ": \" 21 \ ", \" value \ ": \" 4,5,13,14,15, \ "}]}": "" } } Ben hala karakterleri yaşıyorum ve deserialize için biçimlendirilmiş geçerli bir JSON yok Web API'mda – Devsined

+0

Çalıştığınız için teşekkür ederiz :) – Devsined

+0

Şimdi, temiz bir JSON alıyorum ama çok fazla alan var. ve satır dönüşü – Devsined

8

Eski bir prototype kitaplığınız olabilir. kaldırabilirim gibi, böcek

+0

" olarak değiştirir. : //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))) 

"{\" a \ ": 1, \" B \ ": 2}" kayboldu