2012-05-01 22 views
8

Tôi đã tự hỏi tại sao www.json.org/anyone khác không cung cấp gói JAR chính thức của org.json để tải xuống? Tất cả các truy vấn tôi tìm thấy về những người hỏi họ có thể tải xuống các kết quả JAR trong thư trả lời cho trang chỉ liệt kê các tệp nguồn.org.json JAR provisioning

Có vẻ như hơi cồng kềnh khi mong đợi mọi người tải xuống từng tệp nguồn và tự chuẩn bị tệp JAR.

Trả lời

14

Bạn đã cân nhắc sử dụng Maven chưa? Ví dụ, nếu bạn muốn có một JAR để pars JSON bạn có thể chỉ bao gồm ...

http://mvnrepository.com/artifact/org.codehaus.jackson/jackson-core-asl/1.9.6

<dependency> 
    <groupId>org.codehaus.jackson</groupId> 
    <artifactId>jackson-core-asl</artifactId> 
    <version>1.9.6</version> 
</dependency> 

trong một pom.xml, điều này sẽ cung cấp cho bạn jar cho JSON.

Hoặc tốt hơn, sử dụng org.json một ...

http://mvnrepository.com/artifact/org.json/json

<dependency> 
    <groupId>org.json</groupId> 
    <artifactId>json</artifactId> 
    <version>20090211</version> 
</dependency> 
+4

Chỉ cần một cảnh báo nhanh chóng ... phiên bản của org.json đó là có sẵn trong repo maven cũ nhiều mà phiên bản hiện tại trên https github: // github.com/douglascrockford/JSON-java. Tôi đã có một số vấn đề với việc phát hành maven mà tôi giả định là lỗi đã được sửa chữa bởi vì bằng cách sử dụng bản phát hành mới nhất trực tiếp giải quyết các vấn đề cho tôi. –

+0

Các giải pháp crappy ở đây là để đi đến thực hiện JSON java Crockford, forking nó, và tạo ra một cái lọ ra khỏi nó. Tôi đã làm điều này, và nó là một dự án maven là tốt, vì vậy bạn có thể cài đặt nó vào repo của bạn, hoặc, chỉ cần tạo ra một bình w/nó. https://github.com/anatolyg/JSON-java –

+0

Phiên bản 20131018 cũng nằm trong kho lưu trữ mvn dành cho những người thắc mắc. – Johncl

1

Việc thực hiện từ json.org bởi Douglas Crockford không phải là miễn phí. May mắn thay, một sự thay thế gần như thả ở miễn phí tồn tại (rõ ràng, mã của Google đóng gói bởi người khác cho Maven Trung ương):

<dependency> 
    <groupId>com.vaadin.external.google</groupId> 
    <artifactId>android-json</artifactId> 
    <version>0.0.20131108.vaadin1</version> 
</dependency> 

Thêm phần này vào pom.xml thay vì sử dụng json.org một. Chúng tôi đã phải thực hiện chỉ một thay đổi nhỏ đối với mã của chúng tôi cho điều này: một trong những vaadin có thể ném JSONException ở nhiều nơi hơn, vì vậy chúng tôi phải bắt chúng hoặc chuyển chúng qua người gọi (mở rộng tuyên bố ném).

+1

Tôi cũng đã đóng gói này lên Maven và thực hiện một số thay đổi để giúp việc chuyển đến dễ dàng hơn. Đáng chú ý, bây giờ JSONException không được chọn. Xem https://github.com/tdunning/open-json (cũng có sẵn qua maven) –

0

Hãy coi chừng phần mềm json.org có giấy phép nguồn mở. Điều này gây ra vấn đề hạ lưu trong nhiều trường hợp.

Vấn đề là giấy phép về cơ bản là giấy phép MIT, nhưng nó thêm một dòng nói rằng phần mềm chỉ nên được sử dụng cho tốt, không phải là điều xấu. Điều này nghe có vẻ tốt, nhưng nếu bạn có để có được một luật sư công ty để ký tắt nó được khó chịu vì không có định nghĩa pháp lý đồng thuận của "cái ác". Ví dụ: nếu bạn sử dụng thư viện của json.org, bạn không thể đưa phần mềm của bạn vào Debian. Phần mềm của bạn tương tự như vậy không thể là một phụ thuộc cho bất kỳ dự án Apache nào.

Để trợ giúp điều này, tôi đã điều chỉnh và đóng gói ghi đè phòng sạch android của thư viện json.org. Nguồn là trên github và được Apache cấp phép. Xem https://github.com/tdunning/open-json. Để sử dụng, hãy thêm một cái gì đó như thế này vào pom của bạn (hoặc tương đương):

<!-- https://mvnrepository.com/artifact/com.tdunning/json --> 
<dependency> 
    <groupId>com.tdunning</groupId> 
    <artifactId>json</artifactId> 
    <version>1.3</version> 
</dependency> 

Ping tôi với yêu cầu kéo hoặc các vấn đề về github hoặc theo ý bạn muốn.

0

Sử dụng gói com.tdunnning có thể dẫn đến xung đột phụ thuộc, đặc biệt nếu bạn cung cấp dự án của mình cho người khác làm thư viện. Việc triển khai không có khả năng tương thích 100% với org.json

Gói đó (com.tdunning) đã được chia thành https://github.com/openjson/openjson với gói được đổi tên thành com.github.openjson thay vì org.json để ngăn xung đột.

Các phụ thuộc maven:

<dependency> 
    <groupId>com.github.openjson</groupId> 
    <artifactId>openjson</artifactId> 
    <version>1.0.10</version> 
</dependency>