2013-09-03 22 views
5

Tôi đã cố gắng để có được vào thư viện Scala phẩm làm sạch mới được trình bày tại ScalaDays 2013: Scala PicklingScala phẩm làm sạch sử dụng MyObject -> Array [Byte] -> MyObject

Những gì tôi đang thực sự thiếu một số ví dụ đơn giản như thế nào thư viện được sử dụng.

tôi hiểu rằng tôi có thể dưa một số đối tượng một unpickle nó một lần nữa như thế:

import scala.pickling._ 

val pckl = List(1, 2, 3, 4).pickle 
val lst = pckl.unpickle[List[Int]] 

Trong ví dụ này, pckl là loại Pickle. Chính xác thì việc sử dụng loại này là gì và làm thế nào tôi có thể lấy ví dụ lấy một mảng [Byte] của nó?

Trả lời

6

Nếu bạn muốn muốn dưa vào byte, sau đó mã sẽ trông như thế này:

import scala.pickling._ 
import binary._   
val pckl = List(1, 2, 3, 4).pickle 
val bytes = pckl.value 

Nếu bạn muốn json, mã sẽ trông gần như chính xác cùng với một thay đổi nhỏ của hàng nhập khẩu:

import scala.pickling._ 
import json._   
val pckl = List(1, 2, 3, 4).pickle 
val json = pckl.value 

Cách đối tượng được chọn tùy thuộc vào loại nhập mà bạn đã chọn theo scala.pickling (là binary hoặc json). Nhập binary và thuộc tính valueArray[Byte]. Nhập json và đó là json String.

+2

Đúng, cmbaxter hoàn toàn đúng. Loại biểu diễn được chọn là một loại phụ của 'Pickle'. Chọn 'giá trị' từ biểu diễn được chọn cho bạn kiểu bạn mong muốn,' Mảng [Byte] 'cho nhị phân,' Chuỗi' cho JSON, v.v. –

+0

Cảm ơn câu trả lời. Đôi khi tôi bối rối khi Scala làm điều gì đó ngầm. Tôi vẫn còn sử dụng cú pháp rõ ràng hơn như Java nhưng tôi đang làm việc trên nó. ;) –

+1

Có thể nào IntelliJ không hiểu, loại sử dụng nào? Tôi nhập khẩu scala.pickling._ và binary._ và khi tôi gọi .pickle trên một đối tượng, IntelliJ nói với tôi nó là loại Pickle, không BinaryPickle. Vì vậy nó cho tôi biết rằng .value thuộc loại Pickle.this.type # ValueType. Trình biên dịch không phàn nàn, vì nó là kiểu kết quả là BinaryPickle. Công việc của tôi xung quanh: gọi .pickle.asInstanceOf [BinaryPickle] bây giờ để nó không hiển thị lỗi trong IDE. –

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