把登录信息使用cookie存储到客户端是稀松平常的操作,然而我在Safari浏览器上发现了问题。当登录成功后再刷新页面时,控制台报错:JSON Parse error: Unterminated string。查看原因,竟是因为cookie只存储了一半的信息,导致JSON解析发生错误。
开始以为是cookie内容存储过多,超出了最大存储量导致,但很快就推翻了这种想法。
检查代码发现,存储在cookie中的信息距离4K还差很多,而且在除Safari以外的浏览器中都没有问题。查阅资料,终于找到的问题的根本原因,原来Safari不允许非ASCII码作为cookie的值存储,
原文点击这里
。为此,我做了以下验证。第一次的登录信息姓名为汉字,于是到name后面出现汉字的地方都没有存储;第二次登录的信息姓名为字母,cookie中完整的储存了所有用户信息。
找到了问题产生的原因,就开始找解决问题的办法。办法一,存储cookie时,使用
encodeURI编码,读取cookie时,使用decodeURI解码。cookie可以正常存储和读取了,但是非ASCII码的汉字却以乱码的形式显示在页面中了。办法二,存储时,把JSON字符串转换为base64格式,读取时再转换回来。这个方法我没试,因为js没有原生的转换base64的方法,需要自己写转换函数或引入base64.js,且转换后有超出cookie存储大小的风险。方法三,将用户信息存储到Local Storage里,代替cookie。
最终我是使用的方法三,因为代码最简单,且没有其他bug产生。最多可以存储5M,也不用担心超限的问题了。如果遇到必须使用cookie且存在汉字的情况,可以在前两个方法的基础上进行优化。毕竟,cookie相对于LocalStorage也是有自己的优势的。如果有更好的方法,欢迎指教。
把登录信息使用cookie存储到客户端是稀松平常的操作,然而我在Safari浏览器上发现了问题。当登录成功后再刷新页面时,控制台报错:JSON Parse error: Unterminated string。查看原因,竟是因为cookie只存储了一半的信息,导致JSON解析发生错误。 开始以为是cookie内容存储过多,超出了最大存储量导致,但很快就推翻了这种想...
为实现定义的服务器错误保留。
特定错误是基本构造函数
Json
Rpc
Error
的实例,而后者又是本机JavaScript
Error
对象的实例。
可以使用或不使用new关键字来构造每个错误,例如
var err = new
Json
Rpc
Error
.
Parse
Error
();
> const a = '{"__proto__":{ "b":5}}' ;
'{"__proto__":{ "b":5}}'
> const b =
JSON
.
parse
( a ) ;
{ __proto__ : { b : 5 } }
> b . b ;
undefined
> const c = Object . assign ( { } , b ) ;
> c . b
问题
在于
JSON
.
parse
()将__proto__属性保留为普通对象键。 就其本身而言,这不是安全
问题
。 然而,一旦该对象被分配给另一个或迭代并复制值, __proto__属性就会泄漏并成为该对象的原型。
npm install secure-
json
-
parse
将选项对象作为第二个(或第三
yarn add deep-
parse
-
json
const { deep
Parse
Json
} = require('deep-
parse
-
json
')
const
string
ified = '{"personList":"[{\\"name\\":\\"siba\\"},{\\"name\\":\\"bhaskar\\"}]"}'
console.log(deep
Parse
Json
(
string
ified))
// { personList: [ { name: 'siba' }, { name: 'bhaskar' } ] }
问题
分析
根本原因是
json
.dump(data, open('file_path', 'w')) 数据
可能
没有完全写入到文件,导致
json
.load的时候读取的时不完整的
json
数据。
使用 with open() as f: 重写代码,正确关闭文件句柄,从而数据
conda install
问题
(py36_for_pytorch020) abc@robot:~/Desktop/CSPN-master/cspn_pytorch$ conda install samtoolsSolving environment: failed
# >>>>>>>>>>>>>>>&...
Unexpected
string
in
JSON
at position 606902 while parsing '{
npm ERR! "name": "emsteacher",
npm ERR! "version":
在使用org.
json
获取
json
格式数据
org.
json
.
JSON
Exception: Un
terminate
d
string
at 1959 [character 0 line 98]该异常在next
String
方法中抛出:
public
String
next
String
(char quote) throws
JSON
Exception {
char c;
String
Builder sb = new
String
Builder();
for (;;
Syntax
Error
:
JSON
.
parse
: unexpected non-whitespace character after
JSON
data at line 1 column 237 of the
JSON
data
Uncaught Syntax
Error
: Unexpected
string
in
JSON
at position 236
错误原因:循环之前没有初始化或者初始化不完...
我这边的话。这个错误是因为
json
字符串包含了特殊的字符。用这个在来转换对象的时候,就会出现这种错误。我那边有出现两个一个是: 一个是/所以要把这些替换掉就可以了
//去掉特殊的字符 : /这些
String
s=base.getData();
s=s.replaceAll(":", ":").replace("/", "");
RefundValue response =
小程序路由传参,参数转换报错:Syntax
Error
: Unexpected end of
JSON
input
原因:小程序路由传参对参数长度有限制,当传递的参数超出限制时,会被截取。
//item为要传递的对象
wx.navigateTo({
url: '/XX?item=' +
JSON
.
string
ify(item)
onLoad(options){
//options是接收的item参数 ,此时的item参数由于长度超出限度,已经被截取
console.log
JSON
是一种常见的数据格式,如果我们要在前后端之间传递数据,就需要用到
JSON
。
JSON
字符串是由一系列无序的键值对组成。当
JSON
字符串出现
问题
时,就会出现“Unable to
parse
JSON
string
”错误。
出现这种错误的原因
可能
有很多种,如
JSON
格式不正确、缺少引号、不一致的数据类型等。解决这种
问题
的方法是在代码中使用
JSON
.
parse
()方法来转换数据。
当
JSON
格式不正确时,我们需要检查
JSON
字符串是否遵循正确的
JSON
格式。
JSON
格式要求每个属性必须用双引号括起来,每个键值对之间用逗号分隔,对象要用花括号括起来,数组要用方括号括起来。如果格式不对,就要手动修改或者使用
JSON
Schema校验工具进行验证。
JSON
.
parse
()方法用于把字符串转换为JavaScript对象。如果
JSON
字符串中存在
问题
,那么该方法就会抛出错误。我们可以在代码中使用try...catch语句来捕获
JSON
.
parse
()方法的错误,处理异常情况。
总之,当我们使用
JSON
交换数据出现
问题
时,我们需要了解
JSON
的格式要求,并对
JSON
字符串进行校验和修复。此外,学会使用
JSON
.
parse
()方法来解析
JSON
字符串,以便更好地处理
JSON
数据。
Cannot checkout from svn:svn:E170013:Unable to connect to a repository at URL '' svn:E230001:Server.
Cannot checkout from svn:svn:E170013:Unable to connect to a repository at URL '' svn:E230001:Server.
yy012800: