我在解析简单的JSON字符串时遇到问题.我在JSONLint上检查了它们,它表明它们是有效的.但是当我尝试使用其中任何一个JSON.parse或jQuery替代解析它时,它会给我错误unexpected token o:
<!doctype HTML>
<html>
<head>
</head>
<body>
<script type="text/javascript">
var cur_ques_details ={"ques_id":15,"ques_title":"jlkjlkjlkjljl"};
var ques_list = JSON.parse(cur_ques_details);
document.write(ques_list['ques_title']);
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
注意:我正在使用json_encode()PHP编写我的字符串.
什么原因导致第三行出现此错误?
var products = [{
"name": "Pizza",
"price": "10",
"quantity": "7"
}, {
"name": "Cerveja",
"price": "12",
"quantity": "5"
}, {
"name": "Hamburguer",
"price": "10",
"quantity": "2"
}, {
"name": "Fraldas",
"price": "6",
"quantity": "2"
}];
console.log(products);
var b = JSON.parse(products); //unexpected token oRun Code Online (Sandbox Code Playgroud)
打开控制台以查看错误
我遇到了从Web服务返回的JSON的问题.看起来JSON缺少引号,但是当我向JSON添加引号时,我收到错误.以下是错误消息:'Uncaught SyntaxError:Unexpected token o.当我将字符串记录到控制台时:[object Object],[object Object]
以下是一些模拟错误的示例代码:
//Error I am trying to solve
var jsonString = '[{"Id":"10","Name":"Matt"},{"Id":"1","Name":"Rock"}]';
var myData = JSON.parse(jsonString);
$(document).ready(function() {
var $grouplist = $('#groups');
$.each(myData, function() {
$('<li>' + this.Name + '</li>').appendTo($grouplist);
});
});
Run Code Online (Sandbox Code Playgroud)
这是与字符串周围的单引号相同的代码.有用
//Successful Javascript
var jsonString = '[{"Id":"10","Name":"Matt"},{"Id":"1","Name":"Rock"}]';
var myData = JSON.parse(jsonString);
$(document).ready(function() {
var $grouplist = $('#groups');
$.each(myData, function() {
$('<li>' + this.Name + '</li>').appendTo($grouplist);
});
});
//Successful HTML
<ul id="groups"></ul>
Run Code Online (Sandbox Code Playgroud)
但是当我尝试在字符串中添加引号时,就像我似乎需要在我的实际代码中一样,它失败了:
//Does not work when I need to append quotes to the …Run Code Online (Sandbox Code Playgroud) 我已经看过SO和谷歌,但已经注意到这有帮助,我不确定如何继续.我有一个数组,我从一个PHP页面返回使用echo json_encode(),如下所示:
[" "," "," "," "," ",1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]
Run Code Online (Sandbox Code Playgroud)
但是Unexpected token o at Object.parse (native)当我尝试使用JSON.parse()并且Unexpected token o at Function.parse (native)当我使用JQuery交替时,我不断得到.
但是当我把它附加到$scope我可以在页面上打印出来的时候,那么我做错了什么,我怎么能纠正这个?
这是我的控制器
function myController($scope, memberFactory) {
response = memberFactory.getMonth("2013-08-01 06:30:00");
//$scope.response = response;
var monthDays = $.parseJSON(response);
var dates = [];
for (var i = 0; i < monthDays.length; i++) {
if (i % 7 == 0) dates.push([]);
dates[dates.length - 1].push(monthDays[i]);
}
$scope.dates = dates;
//
}
Run Code Online (Sandbox Code Playgroud)
这是我的服务方法:
obj.getMonth = function (date) { …Run Code Online (Sandbox Code Playgroud) 我需要带有2个字段的django modelform,其中第二个字段选择列表取决于在第一个字段中选择的内容.我的模特:
class Offer(BaseModel):
VEHICLE_TYPES = (
('personal','Personal car'),
('truck','Truck'),
)
vehicle_type = models.CharField(max_length=32, choices=VEHICLE_TYPES, default='personal', verbose_name='Vehicle type')
PERSONAL_MAKES = (
('',''),
)
TRUCK_MAKES = (
('',''),
)
make = models.CharField(max_length=32)#what more??
Run Code Online (Sandbox Code Playgroud)
如果vehicle_type设置为personal,我如何将make字段的选项设置为PERSONAL_MAKES?我怎样才能做到这一点?是否可以在模型级别?
我想对服务进行单元测试,但是,在运行测试时,我收到以下错误:
未捕获(在promise中)SyntaxError:MapSubscriber.Array中MapSubscriber.Array.concat.MapSubscriber._next(map.js:77)位于MapSubscriber.project(auth.service.ts:217)的位置1的JSON中的意外标记o. concat.Subscriber.next(Subscriber.js:89)在TakeSubscriber.Array.concat.TakeSubscriber._next(take.js:80),位于ReplaySubject.Array的TakeSubscriber.Array.concat.Subscriber.next(Subscriber.js:89) ReplaySubject上的ReplaySubject.Array.concat.Orray.Array.concat.Atry.Subject.Array.concat.Atry.Subject._trySubscribe(Subject.js:97)中的ReplaySubject.Array.concat.Observable._trySubscribe(Observable.js:57).concat.ReplaySubject._subscribe(ReplaySubject.js:55).位于MapOperator的AnonymousSubject.Array.concat.Observable.subscribe(Observable.js:42)的TakeOperator.Array.concat.TakeOperator.call(take.js:60)中的Array.concat.Observable.subscribe(Observable.js:45) .Array.concat.MapOperator.call(map.js:54)位于CatchOperator.Array.concat.CatchOperator.call(catch.js:79)的AnonymousSubject.Array.concat.Observable.subscribe(Observable.js:42)一个 nonymousSubject.Array.concat.Observable.subscribe(Observable.js:42)
相应的行(auth.service.ts:217)在代码中突出显示.运行应用程序完全正常,因此我没有看到测试失败的明显原因.
注意:这个SO帖子表明我正在解析对象两次.但是,当运行应用程序时,它不应该失败吗?
auth.service.ts
public login(username: string, password: string): Observable<User> {
// ...
return this.http.request(path, requestOptions).map((response: Response) => {
if (response.status === 200) {
const token = response.json().token; // <<-- Uncaught (in promise) SyntaxError: Unexpected token o in JSON at position 1
const user = this.extractUser(response);
return user;
}
return null;
})
.catch(this.handleError);
}
Run Code Online (Sandbox Code Playgroud)
auth.service.spec.ts
describe('AuthService', () => {
beforeEach(() => {
TestBed.configureTestingModule({
providers: [
AuthService,
MockBackend,
BaseRequestOptions,
{
provide: Http, …Run Code Online (Sandbox Code Playgroud) 我正在使用jquery JSON.parse()来解析json从api(Laravel 5)返回的那个$.get().在json似乎是有效的,但是,JSON.parse()在Safari和Chrome浏览器返回错误.
Chrome说:
Uncaught SyntaxError: Unexpected token o
Run Code Online (Sandbox Code Playgroud)
Safari说:
SyntaxError: JSON Parse error: Unexpected identifier "object"
Run Code Online (Sandbox Code Playgroud)
代码片段如下:
$.get('/foo/' + product_id, function(data){
console.log(data);
var product = JSON.parse(data);
if (product) {
// do something
}
});
Run Code Online (Sandbox Code Playgroud)
JSON是:
{
"id":"1b7b3eb7-8769-48fe-a421-64c105de3eff",
"parent":null,
"org_id":"845d0d53-de68-42c3-9007-c3d0e72c555e",
"category_id":"e58237f7-e040-4098-8d46-b84f8cdf7d83",
"purchase_tax":null,
"sale_tax":null,
"code":"982",
"name":"Mr. Destin Hoppe",
"is_purchased":false,
"is_sold":false,
"purchase_price":null,
"selling_price":null,
"purchase_includes_tax":false,
"sale_includes_tax":false,
"created_at":"2015-09-16 17:39:34",
"updated_at":"2015-09-16 17:39:34"
}
Run Code Online (Sandbox Code Playgroud)
有趣的是,eval()工作得很好.
我目前正在练习使用Javascript/Dojo.但是,我有一个我无法解决的错误:
未捕获的SyntaxError:意外的令牌o
我已经快速解决了我的问题:
var data = {
"list": {
"1": {
"Relevance": "Low",
"id": 1,
"Name": "Inorganic"
},
"2": {
"Relevance": "Low",
"id": 2,
"Name": "Mobile"
}
}
}
var jsonData = JSON.parse(data);
alert(jsonData.list[1].Name);
Run Code Online (Sandbox Code Playgroud)
它专门针对以下行:
var jsonData = JSON.parse(data);
Run Code Online (Sandbox Code Playgroud)
我想知道为什么这是一个错误以及我将如何解决它.
我正在搞乱构建一个JSON对象,所以我可以将数据库查询的结果推送到它,然后返回填充的JSON数据.但是从get go中遇到问题.
这是我目前的代码:
//var AppenateResString = {name:"777"};
var AppenateResString = {
"DataSources": [{
"Id": "TEST",
"Rows": [
["10011", "10011 - Test Generic Project"]
],
"NewRows": [],
"DeletedRows": []
}],
"LastUpdated": ""
};
var AppenateResBody = JSON.parse(AppenateResString);
response.body = JSON.stringify(AppenateResBody);Run Code Online (Sandbox Code Playgroud)
但这是我得到的错误:
JavaScript Error: SyntaxError: invalid character 'o' looking for beginning of value
at
<anonymous>:21:23
--
};
var AppenateResBody = JSON.parse(AppenateResString);
^ Error!Run Code Online (Sandbox Code Playgroud)
我已经把它缩小到我的JSON布局出错了.或者我是如何构建JSON对象的......或者是一些基本的,"这就是你如何做JSON"的事情.但我无法弄明白.
有任何想法吗?
PS正如你所看到的,我已经注释了我认为构建的一个非常简单的JSON对象...它失败了.
我需要将此div附加到另一个div,但它给了我这个错误:
SyntaxError:JSON.parse:JSON数据的第1行第2列的意外字符
这是我的javascript代码:
var str = {'message': message,'text': text};
$.ajax({
type: "POST",
url: "api/reply",
data: str,
dataType: "json",
cache: false,
success: function(response)
{
var respons = jQuery.parseJSON(response);
var type = respons.status
if (type == 'success') {
$("<div></div>").html(respons.message).appendTo("#messages");
}
else
{
toastr.error(respons.message)
}
}
})
Run Code Online (Sandbox Code Playgroud) 我坐在一个基于 Flask 的网络应用程序上。理论上,我想从磁盘加载一个 JSON 文件并将其提供给网站上的 javascript。
def getData():
check_for_update()
with open(LOCAL_file,"rb") as myfile:
data = json.load(myfile)
udate = data["today"]
return (udate, data)
Run Code Online (Sandbox Code Playgroud)
然后我将它发送到页面
return render_template('./index2.html', udate = thisdata[0], data = json.dumps(thisdata[1]))
Run Code Online (Sandbox Code Playgroud)
现在在页面上我只是尝试
def getData():
check_for_update()
with open(LOCAL_file,"rb") as myfile:
data = json.load(myfile)
udate = data["today"]
return (udate, data)
Run Code Online (Sandbox Code Playgroud)
然后导致这样的事情

这不能被解析。当我复制和粘贴它时,它工作正常,python 也没有抱怨。
PHP
<?php
header("Content-type: application/json") ;
echo json_encode(array("reply" => "SOME_TEXT")) ;
?>
Run Code Online (Sandbox Code Playgroud)
它回应了这个 - >
{"reply":"SOME_TEXT"}
Run Code Online (Sandbox Code Playgroud)
使用Javascript
<script>
$.get("script.php" , function(data) {
var reply = JSON.parse(data) ;
}) ;
</script>
Run Code Online (Sandbox Code Playgroud)
JS抛出unexpected token in JSON.但是如果我用PHP ("Content-type:text/javascript")或"text/plain"替换PHP代码中的标题,它将正常工作.