Sự khác biệt giữa getString()
và optString()
trong JSON là gì?Sự khác nhau giữa getString() và optString() trong Json
Trả lời
Như Diego đề cập đến, đó là một ý tưởng tốt để kiểm tra documentation (liên kết này hiện nay đã quá hạn - điều tốt chúng ta có Wayback Machine!) trước khi đăng một câu hỏi ở đây, nhưng bây giờ mà bạn có:
Sự khác biệt là optString
trả về chuỗi trống (""
) nếu khóa bạn chỉ định không tồn tại. getString
mặt khác ném một số JSONException
. Sử dụng getString
nếu đó là lỗi cho dữ liệu bị thiếu hoặc optString
nếu bạn không chắc chắn liệu nó có ở đó hay không.
Edit: Mô tả đầy đủ từ các tài liệu:
Nhận một chuỗi tùy chọn liên kết với một chìa khóa. Nó trả về một chuỗi rỗng nếu không có khóa như vậy. Nếu giá trị không phải là một chuỗi và không phải là null, thì nó được chuyển thành một chuỗi.
FYI: việc cung cấp chuỗi thứ hai làm tham số sẽ được sử dụng làm giá trị mặc định nếu khóa được chỉ định không tồn tại. –
public java.lang.String optString (int index) Nhận giá trị chuỗi tùy chọn được liên kết với chỉ mục. Nó trả về một chuỗi rỗng nếu không có giá trị tại chỉ mục đó. Nếu giá trị không phải là một chuỗi và không phải là null, thì nó được chuyển thành một chuỗi. Tham số: chỉ mục - Chỉ mục phải nằm trong khoảng từ 0 đến length() - 1. Trả về: Giá trị chuỗi.
Nếu bạn muốn tránh NullPointerException
bạn tốt hơn tận dụng optString()
Nếu bạn đang lấy dữ liệu từ JSON
bất cứ lúc nào, bạn có thể có null
dữ liệu cho một giá trị quan trọng đặc biệt, tại thời điểm đó thay vì thực hiện Null điều kiện, tốt hơn là sử dụng phương pháp được tối ưu hóa này optString("<keyname>")
Cảm ơn rất nhiều !! nó giúp tôi rất nhiều – Sairam
- 1. Sự khác biệt giữa getString() và getResources.getString()
- 2. Sự khác nhau giữa! = Và =! trong Java?
- 3. Sự khác nhau giữa | và || trong MATLAB?
- 4. Sự khác nhau giữa `% trong%` và `== '
- 5. Sự khác nhau giữa TVar và TMVar
- 6. Sự khác nhau giữa NoClassDefFoundError và ClassNotFoundException?
- 7. sự khác nhau giữa XSD và WSDL
- 8. Sự khác nhau giữa String.scan và String.split
- 9. Sự khác nhau giữa presentModalViewController và presentViewController?
- 10. Sự khác nhau giữa PyMODINIT_FUNC và PyModule_Create
- 11. Sự khác nhau giữa System.Web.Cache và HTTPContext.Curent.Cache
- 12. Sự khác nhau giữa onClickListener và onItemClickListener
- 13. Sự khác nhau giữa innodb_log_buffer_size và innodb_buffer_pool_size
- 14. Sự khác nhau giữa objectForKey và valueForKey?
- 15. Sự khác nhau giữa System.DateTime.Now và System.DateTime.Today
- 16. Sự khác nhau giữa installshield và windowsinstaller
- 17. Sự khác nhau giữa ParameterInfo.DefaultValue và ParameterInfo.RawDefaultValue
- 18. Sự khác nhau giữa NSInvocationOperation và NSBlockOperation
- 19. Sự khác nhau giữa unwrapObservable và()
- 20. Sự khác nhau giữa ListBox và ListView
- 21. Sự khác nhau giữa REST và WebServices
- 22. Sự khác nhau giữa C: và C:/
- 23. Sự khác nhau giữa restartLoader và onContentChanged
- 24. Sự khác nhau giữa DECIMAL và NUMERIC
- 25. Sự khác nhau giữa ViewFlipper và ViewSwitcher
- 26. Sự khác nhau giữa GIT và CVS
- 27. Sự khác nhau giữa sys và os.sys
- 28. Sự khác nhau giữa form_for và form_tag?
- 29. Sự khác nhau giữa AlarmManager và ScheduledExecutorService
- 30. Sự khác nhau giữa OTL và SOCI
'optString' có thể hữu ích trong trường hợp bạn không tự tin rằng định dạng yêu cầu JSON vẫn giữ nguyên ... tức là gọi' getString' trên yêu cầu JSON làm việc lúc đầu, nhưng nếu nó thay đổi trong tương lai sao cho khóa không còn tồn tại, một ngoại lệ sẽ bị ném và ứng dụng của bạn có thể gặp sự cố. –