2016-07-31 27 views
10

Có cách nào để phân tích chuỗi như JSON trong Typecript hay không.
Ví dụ: Trong JS, chúng tôi có thể sử dụng JSON.parse(). Có một chức năng tương tự trong Typecript?Làm thế nào để phân tích cú pháp chuỗi JSON trong Typescript

Tôi có một chuỗi đối tượng JSON như sau:

'{"name": "Bob", "error": false}'

+0

Bạn không thể sử dụng 'JSON.parse()'? – nnnnnn

+1

Trên trang chủ của nó, nó nói rằng "TypeScript là một tập siêu lớn của JavaScript biên dịch thành JavaScript thuần". Hàm JSON.parse() có thể sử dụng được như bình thường. – sigalor

+0

Tôi đang sử dụng trình soạn thảo văn bản Atom và khi tôi thực hiện JSON.parse, tôi nhận được lỗi: Đối số của loại '{}' không thể gán cho tham số kiểu 'string' – ssd20072

Trả lời

39

nguyên cảo là (một superset của) javascript, vì vậy bạn chỉ cần sử dụng JSON.parse như bạn làm trong javascript:

let obj = JSON.parse(jsonString); 

Chỉ trong bạn có thể có loại cho đối tượng kết quả:

interface MyObj { 
    myString: string; 
    myNumber: number; 
} 

let obj: MyObj = JSON.parse('{ "myString": "string", "myNumber": 4 }'); 
console.log(obj.myString); 
console.log(obj.myNumber); 

(code in playground)

+0

cách xác thực rằng đầu vào hợp lệ (kiểm tra loại, một trong các mục đích của bản ghi)? thay thế đầu vào ''{" myString ":" string "," myNumber ": 4}'' bởi ''{" myString ":" string "," myNumberBAD ": 4}'' sẽ không thành công và obj.myNumber sẽ trả về không xác định. –

+0

@DavidPortabella Bạn không thể kiểm tra loại nội dung của chuỗi. Đó là một vấn đề thời gian chạy, và loại kiểm tra là dành cho thời gian biên dịch –

+0

ok. làm thế nào tôi có thể xác nhận rằng một obj typescript đáp ứng giao diện của nó tại thời gian chạy? nghĩa là myNumber không được xác định trong ví dụ này. ví dụ, trong Scala Play, bạn sẽ sử dụng 'Json.parse (văn bản) .validate [MyObj]'. https://www.playframework.com/documentation/2.6.x/ScalaJson làm thế nào bạn có thể làm tương tự trong bản ghi (có thể có một thư viện bên ngoài để làm như vậy?)? –

Các vấn đề liên quan