嗨,我正在使用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创建一个干净的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 Controller 中接收它的方式
...
  // POST api/datavalues/5


   public string Post(int id, JObject  value)
    {
        var temp = value;

...

最佳答案

您似乎在 map 中放置了一个字符串作为值。您应该执行以下操作:
var objMap = {"JObject" : ValuesArray};var json = JSON.stringify(objMap)
发生的情况是您正在对值数组进行双重json编码-请注意,“无效” JSON值实际上是JSON字符串,而不是所需的数组。

编辑
好像您将 map 的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化的值。

10-07 19:08
查看更多