Cú pháp JSON có cho phép các khóa trùng lặp trong một đối tượng không?


205

Đây có phải là json hợp lệ?

{
    "a" : "x",
    "a" : "y"
}

http://jsonlint.com/ nói có.

http://www.json.org/ không nói gì về việc nó bị cấm.

Nhưng rõ ràng nó không có nhiều ý nghĩa, phải không? Hầu hết các triển khai có thể sử dụng một hashtable vì vậy nó đang bị quá tải.


1
Json.NET của C # sẽ xóa cặp khóa đầu tiên nếu bạn hủy đăng ký thànhDictionary<string, string>
Sam Leach

Trong trường hợp bất kỳ ai đến đây hy vọng có giải pháp tìm giá trị trùng lặp trong chuỗi JSON, hãy xem trình xác thực json trực tuyến miễn phí
Pepijn Olivier

jsonlint.com nói có. không, nó sẽ xóa tất cả trừ cặp khóa-giá trị cuối cùng và sau đó xác thực nó, điều này làm cho nó hợp lệ
Tim

7
Sau đó, tiêu chuẩn bị phá vỡ
Brad Thomas

1
Tôi đã sử dụng tên khóa "-" làm bình luận viên và giá trị là một chuỗi chuỗi đơn làm bình luận. Vì vậy, tôi hy vọng không có trình phân tích cú pháp sẽ phàn nàn về nó.
Lothar

Câu trả lời:


126

Từ tiêu chuẩn (p. Ii) :

Dự kiến ​​các tiêu chuẩn khác sẽ đề cập đến tiêu chuẩn này, tuân thủ nghiêm ngặt định dạng văn bản JSON, đồng thời áp đặt các hạn chế đối với các chi tiết mã hóa khác nhau. Các tiêu chuẩn như vậy có thể yêu cầu các hành vi cụ thể. Bản thân JSON chỉ định không có hành vi.

Tiếp tục đi xuống trong tiêu chuẩn (trang 2), đặc tả cho một đối tượng JSON:

Một cấu trúc đối tượng được biểu diễn dưới dạng một cặp mã thông báo khung cong bao quanh các cặp tên / giá trị bằng 0 hoặc nhiều hơn. Một tên là một chuỗi. Một mã thông báo dấu hai chấm theo sau mỗi tên, tách tên khỏi giá trị. Một mã thông báo dấu phẩy duy nhất tách một giá trị từ một tên sau.

Sơ đồ cho đối tượng JSON

Nó không làm cho bất kỳ đề cập đến các khóa trùng lặp là không hợp lệ hoặc hợp lệ, vì vậy theo đặc điểm kỹ thuật tôi sẽ cho rằng điều đó có nghĩa là chúng được phép.

Hầu hết các triển khai thư viện JSON không chấp nhận các khóa trùng lặp không xung đột với tiêu chuẩn, vì trích dẫn đầu tiên.

Dưới đây là hai ví dụ liên quan đến thư viện chuẩn C ++. Khi giải tuần tự hóa một số đối tượng JSON thành một std::mapý nghĩa để từ chối các khóa trùng lặp. Nhưng khi giải tuần tự hóa một số đối tượng JSON thành một std::multimapý nghĩa, việc chấp nhận các khóa trùng lặp là bình thường.


5
Tôi đoán tôi có thể chấp nhận điều này như một câu trả lời, mặc dù tôi thích đề cập đến @PatrickGoley rằng trên json.org, nó được gọi là một tập hợp các cặp khóa / giá trị ngụ ý tính duy nhất có nghĩa là nó không hợp lệ.
kẹp

8
@clamp json.org không phải là tiêu chuẩn và, theo như tôi có thể nói, không phải do Emca International điều hành. json.org dường như được trình bày nặc danh. Đây là các đặc điểm kỹ thuật: ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf gì nó nói trên json.org là không có liên quan.
Timothy Shields

5
@clamp Hãy xem xét std::multimapví dụ tôi vừa thêm. Nó có thể được tuần tự hóa như một đối tượng JSON với các khóa có khả năng trùng lặp.
Timothy Shields

1
@clamp là một tập hợp các cặp khóa / giá trị không loại trừ các tên trùng lặp. {"a":1,"a":2}là một bộ gồm hai cặp khóa / giá trị riêng biệt. Thật vậy, thậm chí {"a":1,"a":1}có thể được coi là một tập hợp các cặp khóa / giá trị xảy ra chỉ có một yếu tố. Thực tế là nó được lặp đi lặp lại có thể được coi như chỉ là một trò chơi cú pháp. Một định nghĩa tốt hơn sẽ là, "Một đối tượng là một hàm một phần từ chuỗi (tên) đến giá trị."
Marcelo Cantos

2
@TimothyShields Và tiêu chuẩn mà bạn đã liên kết nói, "Cú pháp JSON không áp đặt bất kỳ hạn chế nào đối với các chuỗi được sử dụng làm tên, không yêu cầu các chuỗi tên đó là duy nhất và không gán bất kỳ ý nghĩa nào cho việc sắp xếp các cặp tên / giá trị"
Charles

135

Câu trả lời ngắn gọn: Có nhưng không được khuyến khích.
Câu trả lời dài: Nó phụ thuộc vào những gì bạn gọi là hợp lệ ...


ECMA-404 "Cú pháp trao đổi dữ liệu JSON" không nói gì về các tên (khóa) trùng lặp.


Tuy nhiên, RFC 8259 "Định dạng trao đổi dữ liệu ký hiệu đối tượng JavaScript (JSON)" cho biết:

Tên trong một đối tượng NÊN là duy nhất.

Trong ngữ cảnh này NÊN phải được hiểu như được chỉ định trong BCP 14 :

NÊN Từ này, hoặc tính từ "KHUYẾN NGHỊ", có nghĩa là có thể tồn tại những lý do hợp lệ trong các trường hợp cụ thể để bỏ qua một mục cụ thể, nhưng ý nghĩa đầy đủ phải được hiểu và cân nhắc cẩn thận trước khi chọn một khóa học khác.


RFC 8259 giải thích tại sao tên duy nhất (khóa) là tốt:

Một đối tượng có tên là duy nhất có thể tương tác theo nghĩa là tất cả các cài đặt phần mềm nhận được đối tượng đó sẽ đồng ý về ánh xạ giá trị tên. Khi tên trong một đối tượng không phải là duy nhất, hành vi của phần mềm nhận được một đối tượng như vậy là không thể đoán trước. Nhiều triển khai chỉ báo cáo cặp tên / giá trị cuối cùng. Các triển khai khác báo cáo lỗi hoặc không phân tích đối tượng và một số triển khai báo cáo tất cả các cặp tên / giá trị, bao gồm các trùng lặp.



Ngoài ra, như Serguei đã chỉ ra trong các ý kiến: ECMA-262 "Đặc tả ngôn ngữ ECMAScript®", đọc:

Trong trường hợp có các chuỗi tên trùng lặp trong một đối tượng, các giá trị từ trước cho cùng một khóa sẽ được ghi đè.

Nói cách khác, giá trị cuối cùng chiến thắng.


Cố gắng phân tích một chuỗi với các tên trùng lặp với triển khai Java của Douglas Crockford (người tạo ra JSON) dẫn đến một ngoại lệ :

org.json.JSONException: Duplicate key "status"  at
org.json.JSONObject.putOnce(JSONObject.java:1076)

1
JSON được coi là javascript hợp lệ, do đó, nó có liên quan để kiểm tra xem các khóa trùng lặp có phải là mã JS hợp lệ theo nghĩa đen hay không. V8 dường như chấp nhận chúng: d8 -e 'x={"a":1,"a":2}; print(x.a);'Bản in này 2.
Ben Crowell

5
Ngoài ra, thông số ECMA-262 cho JSON.parse()nói rõ ràng In the case where there are duplicate name Strings within an object, lexically preceding values for the same key shall be overwritten.(nói cách khác là giá trị cuối cùng thắng).
Serguei

4
@BenCrowell: Theo như tôi biết, JSON không được coi là JavaScript hợp lệ và có những trường hợp không như vậy, hãy xem timlessrepo.com/json-isnt-a-javascript-subset . Như đã nói, tất nhiên nó được lấy cảm hứng rất nhiều từ JavaScript (thậm chí nó còn nói như vậy trong đặc tả JSON).
Simon Touchtech 17/8/2016

2
Điều đáng chú ý là khi sử dụng "chế độ nghiêm ngặt" của javascript, nếu có hai khóa chrome giống nhau sẽ sử dụng cặp khóa-giá trị thứ hai và bỏ qua khóa đầu tiên. IE11 sẽ ném một ngoại lệ.
Shahar

18

Có 2 tài liệu chỉ định định dạng JSON:

  1. http://json.org/
  2. https://tools.ietf.org/html/rfc7159

Các câu trả lời được chấp nhận trích dẫn từ tài liệu 1. Tôi nghĩ rằng tài liệu thứ 1 rõ ràng hơn, nhưng tài liệu thứ 2 chứa nhiều chi tiết hơn.

Tài liệu thứ 2 nói:

  1. Các đối tượng

    Một cấu trúc đối tượng được biểu diễn dưới dạng một cặp dấu ngoặc nhọn bao quanh 0 hoặc nhiều cặp tên / giá trị (hoặc thành viên). Một tên là một chuỗi. Một dấu hai chấm xuất hiện sau mỗi tên, tách tên khỏi giá trị. Dấu phẩy đơn tách một giá trị từ một tên sau. Tên trong một đối tượng NÊN là duy nhất.

Vì vậy, không được phép có một tên trùng lặp, nhưng nó không được khuyến khích.


10

Tôi đã gặp một câu hỏi tương tự khi xử lý API chấp nhận cả XML và JSON, nhưng không ghi lại cách nó xử lý những gì bạn mong đợi là các khóa trùng lặp trong JSON được chấp nhận.

Sau đây là biểu diễn XML hợp lệ của JSON mẫu của bạn:

<object>
  <a>x</a>
  <a>y</a>
</object>

Khi điều này được chuyển đổi thành JSON, bạn sẽ nhận được những điều sau đây:

{
  "object": {
    "a": [
      "x",
      "y"
    ]
  }
}

Ánh xạ tự nhiên từ một ngôn ngữ xử lý những gì bạn có thể gọi các khóa trùng lặp sang ngôn ngữ khác, có thể đóng vai trò là tài liệu tham khảo thực tiễn tốt nhất tiềm năng ở đây.

Mong rằng sẽ giúp được ai đó!


5

Thông số JSON nói điều này:

Một đối tượng là một tập hợp các cặp tên / giá trị không có thứ tự.

Phần quan trọng ở đây là "không có thứ tự": nó bao hàm tính duy nhất của các phím, bởi vì điều duy nhất bạn có thể sử dụng để chỉ một cặp cụ thể là khóa của nó.

Ngoài ra, hầu hết các lib JSON sẽ khử lưu trữ các đối tượng JSON thành các bản đồ / từ điển băm, trong đó các khóa được đảm bảo duy nhất. Điều gì xảy ra khi bạn giải tuần tự hóa một đối tượng JSON bằng các khóa trùng lặp tùy thuộc vào thư viện: trong hầu hết các trường hợp, bạn sẽ gặp lỗi hoặc chỉ tính giá trị cuối cùng cho mỗi khóa trùng lặp.

Ví dụ, trong Python, json.loads('{"a": 1, "a": 2}')trả về {"a": 2}.


23
không có thứ tự ngụ ý duy nhất? Tôi nghĩ rằng thiết lập là từ hoạt động ở đây
Patrick Goley

8
Một bộ sưu tập màu sắc không có thứ tự: Xanh dương, Xanh lục, Xanh lục, Xanh lam, Đỏ, Xanh lam, Xanh lục - Nó có các bản sao.
Timothy Shields

5
Cụm từ văn bản bạn đang trích dẫn, "Một đối tượng là một tập hợp các cặp tên / giá trị không có thứ tự", không xuất hiện trong thông số JSON ...
Timothy Shields

6
Tôi thấy bây giờ bạn đã trích dẫn json.org. Nó 'gần' với chính thức, nhưng nó không phải là đặc điểm kỹ thuật. Đầu trang có một liên kết đến đặc tả, được lặp lại nguyên văn trên json.org. Nếu bạn tìm kiếm thông số kỹ thuật, từ "không có thứ tự" sẽ không xuất hiện và từ "bộ" chỉ xuất hiện trong các ngữ cảnh không liên quan đến các đối tượng JSON.
Timothy Shields

5
Lưu ý rằng nó nói "tập hợp các cặp tên / giá trị không được sắp xếp ", các cặp không phải là tên. Đó là, { (a,b), (a,c) } một bộ duy nhất. Vì vậy, về mặt kỹ thuật theo định nghĩa json.org {"a":1,"a":2}là hợp lệ nhưng {"a":1,"a":2,"a":1}không phải. Cũng lưu ý rằng ECMA-404 (tiêu chuẩn thực tế) tránh sử dụng từ "bộ":An object structure is represented as a pair of curly bracket tokens surrounding zero or more name/value pairs.
Serguei

3

NÊN là duy nhất không có nghĩa là PHẢI là duy nhất. Tuy nhiên, như đã nêu, một số trình phân tích cú pháp sẽ thất bại và những người khác sẽ chỉ sử dụng giá trị cuối cùng được phân tích cú pháp. Tuy nhiên, nếu thông số kỹ thuật được dọn dẹp một chút để cho phép trùng lặp thì tôi có thể thấy việc sử dụng trong đó bạn có thể có một trình xử lý sự kiện đang chuyển đổi JSON thành HTML hoặc một số định dạng khác ... trong những trường hợp như vậy, nó sẽ hoàn toàn hợp lệ phân tích JSON và tạo định dạng tài liệu khác ...

[
  "div":
  {
    "p":"hello",
    "p":"universe"
  }
  "div":
  {
    "h1":"Heading 1",
    "p":"another paragraph"
  }
]

sau đó có thể dễ dàng phân tích cú pháp sang html chẳng hạn

<body>
 <div>
  <p>hello</p>
  <p>universe</p>
 </div>
 <div>
  <h1>Heading 1</h1>
  <p>another paragraph</p>
 </div>
</body>

Tôi có thể thấy lý do đằng sau câu hỏi nhưng vì nó đứng ... Tôi sẽ không tin nó.


Mảng ví dụ đầu tiên của bạn thiếu dấu phẩy. Ngoài ra, nó không phù hợp với chính nó. Nếu bạn sẽ sử dụng một từ điển như một bộ sưu tập theo thứ tự, mảng bên ngoài của bạn cũng chỉ là một đối tượng. Ví dụ {"div":{"p":"hello","p":"universe"}, "div":{"h1":"Heading 1","p":"another paragraph"}}. Bây giờ, rất nhiều người và khung công tác coi các đối tượng JSON là từ điển không có thứ tự, nhưng JavaScript và ví dụ API của MongoDB dựa vào thứ tự các khóa trong từ điển, vì vậy những gì bạn đề xuất (từ điển được đặt hàng) không phải là chưa từng thấy. Bạn chỉ cần một trình phân tích cú pháp chuyên dụng.
binki

2

Hỏi về mục đích, có những câu trả lời khác nhau:

Sử dụng JSON để tuần tự hóa các đối tượng (JavaScriptObjectNotation), mỗi phần tử từ điển ánh xạ tới một thuộc tính đối tượng riêng lẻ, vì vậy các mục nhập khác nhau xác định một giá trị cho cùng một thuộc tính không có nghĩa.

Tuy nhiên, tôi đã gặp một câu hỏi tương tự từ một trường hợp sử dụng rất cụ thể: Viết các mẫu JSON để kiểm tra API, tôi đã tự hỏi làm thế nào để thêm nhận xét vào tệp JSON của chúng tôi mà không phá vỡ tính khả dụng. Thông số JSON không biết ý kiến, vì vậy tôi đã đưa ra một cách tiếp cận rất đơn giản:

Để sử dụng các khóa trùng lặp để nhận xét các mẫu JSON của chúng tôi . Thí dụ:

{ "property1" : "value1", "REMARK" : "... prop1 controls ...", "property2" : "value2", "REMARK" : "... value2 raises an exception ...", }

Các trình tuần tự hóa JSON mà chúng tôi đang sử dụng không có vấn đề gì với các bản sao "NHỚ" này và mã ứng dụng của chúng tôi chỉ đơn giản bỏ qua chi phí nhỏ này.

Vì vậy, mặc dù không có ý nghĩa gì trên lớp ứng dụng, các bản sao này đối với chúng tôi cung cấp một cách giải quyết có giá trị để thêm nhận xét vào các mẫu thử nghiệm của chúng tôi mà không phá vỡ khả năng sử dụng của JSON.


Đây là một ý tưởng tồi. Bằng cách bao gồm các khóa trùng lặp, ngay cả khi bạn không cần đọc dữ liệu trong đó, bạn vẫn đang dựa vào hành vi không xác định. Một số trình phân tích cú pháp, chẳng hạn như trình phân tích cú pháp JSON-java của Crockford, đưa ra một ngoại lệ và từ chối phân tích dữ liệu.
Richard Smith

Trên thực tế hoạt động hoàn hảo trong môi trường của chúng tôi, vì vậy phục vụ nhu cầu của tôi, mặc dù tôi đồng ý với bạn rằng đó là một loại không phù hợp;)
aknoepfel

@RichardSmith Tôi muốn nói rằng các trình phân tích cú pháp và thông số kỹ thuật ES mới hơn đã xác định hành vi.
binki

2

Đăng và trả lời vì có rất nhiều ý tưởng lỗi thời và nhầm lẫn về các tiêu chuẩn. Tính đến tháng 12 năm 2017, có hai tiêu chuẩn cạnh tranh:

RFC 8259 - https://tools.ietf.org/html/rfc8259

ECMA-404 - http: //www.ecma-i Intl.org/publications/files/ECMA-ST/ECMA-404.pdf

json.org gợi ý ECMA-404 là các tiêu chuẩn, nhưng trang web này không xuất hiện để có một cơ quan. Mặc dù tôi nghĩ thật công bằng khi coi ECMA là cơ quan có thẩm quyền, nhưng điều quan trọng ở đây là, điểm khác biệt duy nhất giữa các tiêu chuẩn (liên quan đến các khóa duy nhất) là RFC 8259 nói rằng các khóa phải là duy nhất và ECMA-404 nói rằng chúng không bắt buộc phải có độc nhất.

RFC-8259:

"Tên trong một đối tượng NÊN là duy nhất."

Từ "nên" trong tất cả các chữ hoa như thế, có nghĩa trong thế giới RFC, được định nghĩa cụ thể trong một tiêu chuẩn khác (BCP 14, RFC 2119 - https://tools.ietf.org/html/rfc2119 ) như,

  1. NÊN Từ này, hoặc tính từ "KHUYẾN NGHỊ", có nghĩa là có thể tồn tại những lý do hợp lệ trong các trường hợp cụ thể để bỏ qua một mục cụ thể, nhưng ý nghĩa đầy đủ phải được hiểu và cân nhắc cẩn thận trước khi chọn một khóa học khác.

ECMA-404:

"Cú pháp JSON không áp đặt bất kỳ hạn chế nào đối với các chuỗi được sử dụng làm tên, không yêu cầu các chuỗi tên đó là duy nhất và không gán bất kỳ ý nghĩa nào cho việc sắp xếp các cặp tên / giá trị."

Vì vậy, cho dù bạn cắt nó như thế nào, thì nó vẫn hợp lệ về mặt cú pháp .

Lý do được đưa ra cho khuyến nghị khóa duy nhất trong RFC 8259 là,

Một đối tượng có tên là duy nhất có thể tương tác theo nghĩa là tất cả các cài đặt phần mềm nhận được đối tượng đó sẽ đồng ý về ánh xạ giá trị tên. Khi tên trong một đối tượng không phải là duy nhất, hành vi của phần mềm nhận được một đối tượng như vậy là không thể đoán trước. Nhiều triển khai chỉ báo cáo cặp tên / giá trị cuối cùng. Các triển khai khác báo cáo lỗi hoặc không phân tích đối tượng và một số triển khai báo cáo tất cả các cặp tên / giá trị, bao gồm các trùng lặp.

Nói cách khác, từ quan điểm RFC 8259, nó hợp lệ nhưng trình phân tích cú pháp của bạn có thể không hoạt động và không có lời hứa nào, nếu có, giá trị sẽ được ghép với khóa đó. Từ quan điểm ECMA-404 (mà cá nhân tôi coi là cơ quan có thẩm quyền), đó là thời hạn hợp lệ. Đối với tôi điều này có nghĩa là bất kỳ trình phân tích cú pháp nào từ chối phân tích cú pháp đều bị hỏng. Nó ít nhất nên phân tích theo cả hai tiêu chuẩn này. Nhưng làm thế nào nó được biến thành đối tượng lựa chọn gốc của bạn, trong mọi trường hợp, các khóa duy nhất hay không, hoàn toàn phụ thuộc vào môi trường và tình huống, và không có điều nào trong tiêu chuẩn bắt đầu.


json.org thực sự có trước tiêu chuẩn hóa ECMA. Tôi tin rằng nó thực sự được thiết lập bởi chính Crockford (đó là lý do tại sao nó có một đầu cắm không biết xấu hổ cho cuốn sách của ông). Tại thời điểm đó, nó là thẩm quyền cho JSON.
tối đa

1

Nó không được định nghĩa trong tiêu chuẩn ECMA JSON . Và nói chung, việc thiếu định nghĩa trong một phương tiện tiêu chuẩn, "Đừng tin vào điều này hoạt động theo cùng một cách ở mọi nơi."

Nếu bạn là người chơi cờ bạc, "nhiều" công cụ JSON sẽ cho phép sao chép và chỉ cần sử dụng giá trị được chỉ định cuối cùng. Điều này:

var o = {"a": 1, "b": 2, "a": 3}

Trở thành này:

Object {a: 3, b: 2}

Nhưng nếu bạn không phải là người chơi cờ bạc, đừng tin vào điều đó!


1

Các tiêu chuẩn nói điều này:

Các ngôn ngữ lập trình rất khác nhau về việc chúng có hỗ trợ các đối tượng hay không, và nếu vậy, các đặc điểm và ràng buộc nào mà các đối tượng đưa ra. Các mô hình của các hệ thống đối tượng có thể rất khác nhau và đang tiếp tục phát triển. Thay vào đó, JSON cung cấp một ký hiệu đơn giản để thể hiện các bộ sưu tập các cặp tên / giá trị. Hầu hết các ngôn ngữ lập trình sẽ có một số tính năng để thể hiện các bộ sưu tập như vậy, có thể đi theo các tên như bản ghi, struct, dict, map, hash hoặc object.

Lỗi ít nhất là ở node.js. Mã này thành công trong node.js.

try {
     var json = {"name":"n","name":"v"};
     console.log(json); // outputs { name: 'v' }
} catch (e) {
     console.log(e);
}

1
Đây không phải là một lỗi và phần bạn trích dẫn giải thích lý do tại sao không phải là: các ngôn ngữ khác nhau hoạt động khác nhau và các trình phân tích cú pháp JSON sẽ làm những gì tự nhiên nhất cho ngôn ngữ đó. Trong mọi trường hợp, câu trả lời này không thêm bất cứ điều gì mà người dùng454322 đã nói ở trên.
Richard Smith

1

Theo RFC-7159, tiêu chuẩn hiện tại cho JSON do Lực lượng đặc nhiệm kỹ thuật Internet (IETF) công bố, nêu rõ "Các tên trong một đối tượng NÊN là duy nhất". Tuy nhiên, theo RFC-2119 định nghĩa thuật ngữ được sử dụng trong các tài liệu IETF, từ "thực tế" có nghĩa là "... có thể tồn tại những lý do hợp lệ trong các trường hợp cụ thể để bỏ qua một mục cụ thể, nhưng phải hiểu đầy đủ ý nghĩa và cân nhắc cẩn thận trước khi chọn một khóa học khác. " Điều này về cơ bản có nghĩa là trong khi có các khóa duy nhất được khuyến nghị, thì đó không phải là điều bắt buộc. Chúng ta có thể có các khóa trùng lặp trong một đối tượng JSON và nó vẫn hợp lệ.

Từ ứng dụng thực tế, tôi đã thấy giá trị từ khóa cuối cùng được xem xét khi các khóa trùng lặp được tìm thấy trong JSON.


0

Trong C # nếu bạn hủy đăng ký, Dictionary<string, string>nó sẽ lấy cặp giá trị khóa cuối cùng:

string json = @"{""a"": ""x"", ""a"": ""y""}";
var d = JsonConvert.DeserializeObject<Dictionary<string, string>>(json);
// { "a" : "y" }

nếu bạn cố gắng giải thích

class Foo
{
    [JsonProperty("a")]
    public string Bar { get; set; }

    [JsonProperty("a")]
    public string Baz { get; set; }
}

var f = JsonConvert.DeserializeObject<Foo>(json);

bạn có một Newtonsoft.Json.JsonSerializationExceptionngoại lệ


2
Tôi đoán đó là những gì hầu hết (nếu không phải tất cả) các triển khai thực hiện, nhưng nó không trả lời câu hỏi của tôi nếu nó hợp lệ như thông số kỹ thuật của JSON.
kẹp

@svidgen: Đây thậm chí không phải là triển khai của Microsoft ... đây là thư viện của bên thứ ba.
BoltClock

@BoltClock Ah, chạm vào.
Svidgen
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.