JSON.stringify 向我的 Json 对象添加额外的 \ 和 "" 的问题
Posted
技术标签:
【中文标题】JSON.stringify 向我的 Json 对象添加额外的 \\ 和 "" 的问题【英文标题】:Issue with JSON.stringify adding a extra \ and "" to my Json objectJSON.stringify 向我的 Json 对象添加额外的 \ 和 "" 的问题 【发布时间】:2012-12-04 16:44:00 【问题描述】:您好,我正在使用 javascript 创建一个对象数组,其中包含一个键和一个值,使用以下代码。
ValuesArray.push( key: $(this).attr('someattribute'), value: $(this).val() );
结果我有这样的对象数组:
key:29; value: 'Country'
Key:12; value: '4,3,5'
当我尝试对其进行字符串化并在帖子中发送该 JSON 时,我在不想要的地方使用了错误的格式 JSON我遇到了麻烦。如何使用 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;
...
【问题讨论】:
【参考方案1】:看起来您正在将一个字符串作为值放置在您的地图中。你应该这样做:
var objMap = "JObject" : ValuesArray;
var json = JSON.stringify(objMap)
发生的情况是您正在对值数组进行双重 json 编码 - 请注意,您的“无效”JSON 值实际上是 JSON 字符串,而不是您想要的数组。
编辑 看起来您正在将 JSON 映射字符串插入一个数组,然后对其进行字符串化。这是一个 jsfiddle,可以帮助您获得所需的内容 - http://jsfiddle.net/4G5nF/
在您的发帖请求中,试试这个
var jObject = "JObject" : ValuesArray;
$.ajax( url: address,
type: 'POST',
dataType: 'json',
data: jObject,
success: function (data) .. );
注意数据属性的变化。这是一个自动为您 JSON 化的值。
【讨论】:
谢谢 SB 但它没有工作它创建这个 JSON "\"JObject\":": "\"key\":\"20\",\"value\": \"ddd\",\"key\":\"21\",\"value\":\"4,5,13,14,15,\"]": "" I我的 Web API 中仍然有字符 \ 并且没有格式化为反序列化的有效 JSON 有趣的是,现在我得到了一个干净的 JSON,但有很多空格和换行 这是错误的,这不是它发生的原因。这是因为创建的 JSON 字符串是:["key":"29","value":"Country","key":"30","value":"4,3,5"]。但是当您尝试将其发布到 php 时,您要发送的字符串被放置在另一个字符串中,分隔符为 "。这意味着您的字符串不能包含 ",因此 jquery 将它们转换为 \"【参考方案2】:const config = a: 1, b: 2
console.log(JSON.stringify(JSON.stringify(config)))
"\"a\": 1, \"b\": 2"
【讨论】:
【参考方案3】:可能你有一个旧的prototype
库。
当我删除它时,错误消失了
【讨论】:
这是相关的:***.com/questions/710586/…以上是关于JSON.stringify 向我的 Json 对象添加额外的 \ 和 "" 的问题的主要内容,如果未能解决你的问题,请参考以下文章
在 fabricjs 对象上应用 JSON.stringify 后自定义属性丢失
JSON.stringify 和 JSON.parse 之间的区别
JSON.stringify////////////////////////////////zzzzzzzzzzzzzz