JSON.stringify在我的Json对象中添加额外的\和“”的问题

嗨,我正在使用Javascript使用以下代码创建带有键和值的对象数组。

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

结果,我得到了这样的对象数组:

key:29; value: 'Country'

Key:12; value: '4,3,5'

当我尝试将其字符串化并在帖子中发送该JSON时,在我不想要的地方,我使用\和“格式化了错误的JSON,因此当我尝试在C#的代码背后将JSON作为JObject销毁时,我遇到了麻烦。如何使用stringify" title="stringify">stringify创建一个干净的JSON

var jObject = JSON.stringify(ValuesArray);

我的JSON现在错了:

{

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

}

我想要一个像这样的JSON对象

{

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

}

[]和字符周围没有引号\

有什么好办法解决。

谢谢

这是我如何将JSON发送到我的API的详细信息,这也是我将JSON发送到我的Web API的方法:

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控制器中接收它的方式

...

// POST api/datavalues/5

public string Post(int id, JObject value)

{

var temp = value;

...

回答:

您似乎在地图中放置了一个字符串作为值。您应该执行以下操作:

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

发生的事情是您正在对值数组进行双重json编码-请注意,“无效” JSON值实际上是JSON字符串,而不是所需的数组。

好像您将映射的JSON字符串粘贴到Array中,然后将其字符串化。这是一个jsfiddle,它可以帮助您获得所需的内容-http:

//jsfiddle.net/4G5nF/

在您的帖子请求中,尝试此操作

var jObject = {"JObject" : ValuesArray};

$.ajax({ url: address,

type: 'POST',

dataType: 'json',

data: jObject,

success: function (data) { .. }});

注意data属性中的更改。这是一个自动为您JSON化的值。

以上是 JSON.stringify在我的Json对象中添加额外的\和“”的问题 的全部内容, 来源链接: utcz.com/qa/400153.html

回到顶部