相关疑难解决方法(0)

JSON遗漏了Infinity和NaN; ECMAScript中的JSON状态?

知道为什么JSON遗漏了NaN和+/- Infinity?它将Javascript放在奇怪的情况下,否则,如果它们包含NaN或+/-无穷大值,那么否则可以序列化的对象不会.

看起来像是一成不变的:见RFC4627ECMA-262(第24.3.2节,JSON.stringify,第4节,第507页,最后编辑):

有限数字通过调用进行字符串化ToString(number).无论符号如何,NaN和Infinity都表示为String null.

javascript json ecma262

161
推荐指数
6
解决办法
6万
查看次数

json_encode()转义正斜杠

我从Instagram上拉JSON:

$instagrams = json_decode($response)->data;

然后将变量解析为PHP数组以重构数据,然后重新编码和缓存文件:

file_put_contents($cache,json_encode($results));

当我打开缓存文件时,所有正斜杠"/"都被转义:

http:\/\/distilleryimage4.instagram.com\/410e7...

我从搜索中收集json_encode()自动执行此操作...有没有办法禁用它?

php json

158
推荐指数
2
解决办法
13万
查看次数

JSONObject.toString:如何不转义斜杠

我需要用JSON发送日期.日期字符串应如下所示:

"2013年5月15日"

相反,JSONObject.toString逃避它如下:

"2013\/ 5\/ 15"

我知道这样做是为了允许在脚本标签内部使用json字符串,因为这个问题解释了: JSON:为什么正斜杠被转义了?

但就我而言,我并不需要它.实际上服务器返回错误.服务器没有处理这个,我无法修复服务器,所以我必须在移动客户端代码中修复它.

String.replace序列化后我可以做一个,但如果我真的想在JSON的任何其他部分包含"\ /"字符串怎么办?

有没有办法序列化JSON对象而不转义斜杠?(如果可能,不逃避任何事情)

提前致谢.

java android json

32
推荐指数
3
解决办法
4万
查看次数

PHP json_encode json_decode UTF-8

如何将带有国际字符的json编码字符串保存到数据库,然后在浏览器中解析解码后的字符串?

<?php           
    $string = "très agréable";  
    // to the database 
    $j_encoded = json_encode(utf8_encode($string)); 
    // get from Database 
    $j_decoded = json_decode($j_encoded); 
?>    
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <?= $j_decoded ?>
</html> 
Run Code Online (Sandbox Code Playgroud)

php json utf-8

24
推荐指数
6
解决办法
13万
查看次数

为什么斜杠是JSON中可逃避的角色?

可能重复:
JSON:为什么正斜杠被转义?

json.org指出,正斜杠(又名solidus /)可以被转义:

"\/"
Run Code Online (Sandbox Code Playgroud)

但是,未转义的斜杠也是有效的:

"/"
Run Code Online (Sandbox Code Playgroud)

这背后的理性是什么?它来自Javascript根源吗?(即,"</script>"基于浏览器的Javascript中存在问题,请参阅Douglas Crockford的评论)或者有任何其他原因吗?

json specifications escaping slash

23
推荐指数
2
解决办法
2万
查看次数

如何在HTML文档中安全地使用</ script>嵌入JSON?

在Rails 3.1应用程序中,如何安全地将一些JSON数据嵌入到HTML文档中?

假设我在控制器动作中有这个:

@tags = [
    {name:"tag1", color:"green"}, 
    {name:"</script><b>I can do something bad here</b>", color:"red"}
]
Run Code Online (Sandbox Code Playgroud)

这在相应的观点中:

<script type="text/javascript" charset="utf-8">
    //<![CDATA[
    var tags_list = <%= @tags.to_json %>;
    // ]]>
</script>
Run Code Online (Sandbox Code Playgroud)

然后我得到这个结果HTML:

var tags_list = [
    {&quot;name&quot;:&quot;tag1&quot;,&quot;color&quot;:&quot;green&quot;},
    {&quot;name&quot;:&quot;&lt;/script&gt;&lt;b&gt;I can do something bad here&lt;/b&gt;&quot;,&quot;color&quot;:&quot;red&quot;}
];
Run Code Online (Sandbox Code Playgroud)

这会SyntaxError: Unexpected token &在Chrome中触发

如果我删除Rails的默认HTML转义<%=raw tags.to_json %>,则返回:

var tags_list = [
    {"name":"tag1","color":"green"},
    {"name":"</script><b>I can do something bad here</b>","color":"red"}
];
Run Code Online (Sandbox Code Playgroud)

当然,这会破坏HTML文档</script>.

我可以以某种方式告诉to_json()方法返回更像这样的东西:

var tags_list = [
    {"name":"tag1","color":"green"},
    {"name":"&lt;/script&gt;&lt;b&gt;I can do something bad …
Run Code Online (Sandbox Code Playgroud)

json ruby-on-rails html-parsing ruby-on-rails-3

21
推荐指数
3
解决办法
1万
查看次数

如何在Rails中输出JSON而不转义反斜杠

我需要以一种不同寻常的格式为客户输出一些JSON.我的应用程序是用Rails 5编写的.

期望的JSON:

{
  "key": "\/Date(0000000000000)\/"
}
Run Code Online (Sandbox Code Playgroud)

时间戳值需要\/在字符串的开头和结尾都有.据我所知,这似乎是.NET服务中常用的一种格式.我试图让斜线正确输出.

我通过单个控制器操作将问题简化为vanilla Rails 5应用程序.到目前为止,我能想到的逃逸的所有排列都失败了.

def index
  render json: {
    a: '\/Date(0000000000000)\/',
    b: "\/Date(0000000000000)\/",
    c: '\\/Date(0000000000000)\\/',
    d: "\\/Date(0000000000000)\\/"
  }
end
Run Code Online (Sandbox Code Playgroud)

其中输出如下:

{
    "a": "\\/Date(0000000000000)\\/",
    "b": "/Date(0000000000000)/",
    "c": "\\/Date(0000000000000)\\/",
    "d": "\\/Date(0000000000000)\\/"
}
Run Code Online (Sandbox Code Playgroud)

为了便于讨论,假设格式不能改变,因为它是由第三方控制的.

我已经向Github上传了一个测试应用程序来演示这个问题.https://github.com/gregawoods/test_app_ignore_me

ruby json ruby-on-rails

13
推荐指数
2
解决办法
1952
查看次数

包含正斜杠/和HTML的字符串的NSJSONSerialization序列化未正确转义

我试图将一些简单的HTML转换为JSON对象中的字符串值,并且我无法使字符串编码无法转义NSJSONSerialization中的字符串.

示例...我有一个包含一些基本HTML文本的字符串:

NSString *str = @"<html><body><p>Samples / Text</p></body></html>";
Run Code Online (Sandbox Code Playgroud)

期望的结果是JSON,其中HTML为值:

{
    "Title":"My Title",
    "Instructions":"<html><body><p>Samples / Text</p></body></html>"
}
Run Code Online (Sandbox Code Playgroud)

我正在使用标准技术将NSDictionary转换为包含JSON的NSString:

NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:str forKey:@"Instructions"];
[dict setObject:@"My Title" forKey:@"Title"];

NSError *err;
NSData *data = [NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:&err];
NSString *resultingString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@", resultingString);
Run Code Online (Sandbox Code Playgroud)

此方法生成的JSON有效,但HTML包含所有正斜杠转义:

{
    "Title":"My Title",
    "Instructions":"<html><body><p>Samples \/ Text<\/p><\/body><\/html>"
}
Run Code Online (Sandbox Code Playgroud)

这会在JSON字符串指令中创建无效的HTML.

我想坚持使用NSJSONSerialization,因为我们在我们的框架中的其他地方都使用它,并且在切换到非Apple库之前我已经被烧毁了,因为它们得不到支持.我尝试了很多不同的字符串编码,它们都逃脱了尖括号.

显然\ /是JavaScript中对/字符的有效表示,这就是转义正斜杠的原因(即使StackOverflow文本编辑器也将其转义).请参阅: 使用正斜杠转义json字符串? 还有JSON:为什么正斜线逃脱了?.我只是不希望它这样做,似乎没有办法阻止iOS在序列化时转义字符串值中的正斜杠.

json nsstring ios nsstringencoding nsjsonserialization

10
推荐指数
1
解决办法
7811
查看次数

7
推荐指数
2
解决办法
524
查看次数

使JSON不能逃避正斜杠

这是对这个问题的延伸:

JSON:为什么正斜线逃脱了?

所以我理解为什么当我创建一个包含每个索引中包含URL(链接)的字符串的JSONArray时,JSON会转义转发斜杠.我现在想知道当我像这样序列化一个字符串时,如何使JSON不能逃脱这些正斜杠:

[['documentary', 'http://www.google.com/#q=documentary']]
Run Code Online (Sandbox Code Playgroud)

进入JSONArray.我正在考虑迭代字符串并删除任何存在反斜杠的实例,但我想知道是否有更有效的方法来执行此操作或使用它以使上述字符串不会自动转义如下:

[['documentary', 'http:\/\/www.google.com\/#q=documentary']]
Run Code Online (Sandbox Code Playgroud)

谢谢!如果有什么不清楚,请告诉我.

java json org.json

5
推荐指数
1
解决办法
6728
查看次数