2011-10-16 36 views
20

Có giá trị jString : JString đang giữ một chuỗi "abc" bên trong, tôi nhận được "JString(abc)" : String nếu tôi gọi jString.toString. Làm thế nào để tôi nhận được "abc" : String thay thế?Làm thế nào để chuyển đổi một giá trị JString JSON thành một chuỗi bình thường trong Lift?

+1

tôi đã tìm thấy giải pháp cho sử dụng 'jString.values: chuỗi' nhưng tôi cảm thấy không chắc chắn nếu nó chính xác - tại sao nó được gọi là 'giá trị' (không phải là' giá trị') nếu chỉ có một 'Chuỗi'? – Ivan

Trả lời

16

Để trích xuất một giá trị từ JValue bạn có thể sử dụng bất kỳ phương pháp mô tả ở đây: What is the most straightforward way to parse JSON in Scala?

Ví dụ:

json.extract[String] 

Bạn có thể sử dụng 'làm' chức năng để chuyển đổi bất kỳ JValue sang định dạng có thể in được. Sau đó, 'đẹp' hoặc 'nhỏ gọn' sẽ chuyển đổi thành chuỗi.

compact(render(json)) 

hoặc

pretty(render(json)) 
+0

Tôi không muốn hiển thị JSON. Tôi muốn ngược lại - để trích xuất một chuỗi giá trị của một thuộc tính của một đối tượng được tuần tự hóa trong JSON và tôi đã phân lập trường duy nhất đó thành một JString riêng biệt, không chứa gì ngoài giá trị mà tôi cần. – Ivan

7
val jstring=JString("abc") 
implicit val formats = net.liftweb.json.DefaultFormats 
System.out.println(jstring.extract[String]) 
6

Tôi tin rằng cách tốt nhất là sử dụng phù hợp:

val x = ... (whatever, maybe it's a JString) 

x match { 
    case JString(s) => do something with s 
    case _   => oops, something went wrong 
} 
1

này được hỏi một thời gian trước, nhưng tôi muốn có một một dòng đơn giản helper sẽ nhận được chuỗi của tôi cho tôi trong bối cảnh của một biểu thức, vì vậy tôi đã viết điều nhỏ bé này bên trong một đối tượng có tên Get:

object Get { 
    def string(value: JValue): String = {                            
     val JString(result) = value                        
     result                                
    } 
    ... 
    } 

Bằng cách này tôi chỉ có thể làm được, ví dụ như, val myString = Get.string (jsonStringValue)

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