Ben lift-json sınıf çıkarıcı ile bir bson dize render kullanıyorum, bundan sonra, o bson dize ile bir belge örneği mongo Document
sınıf yapıcısı kullanın.Lift-json sınıf çıkarıcı yapıcı mongo bson dizisi nasıl kullanılır?
Sorun, $or
bson'unu temsil etmektir. Klasik bir json dizisi yok gibi görünüyor.
{"$or": [
{"username": "administrator"},
{"phone":"110"},
{"email":"[email protected]"},
{"pen_name":"lorancechen"}
]}
Kaldırma sınıfı çıkarıcı nasıl kullanılır bu bson dizisini temsil eder? Ayrıca, uygulama ile mongo arasındaki ip kullanımının sebebi de basit bir soket altında iletişim kurmalarıdır.
import net.liftweb.json._
import net.liftweb.json.Extraction._
case class Name(name: String)
case class JsonArray(array:List[Name])
object JsonClient extends App {
implicit val formats = DefaultFormats
val names = Name("jone01") :: Name("jone02") :: Nil
val array = JsonArray(names)
val jsonString = prettyRender(decompose(array))
println(jsonString)
}
ÇIKIŞ:
{
"array":[
{
"name":"jone01"
},
{
"name":"jone02"
}
]
}
bu
{"$or": [
{"username": "administrator"},
{"phone":"110"},
{"email":"[email protected]"},
{"pen_name":"lorancechen"}
]}
her alan anahtarını temsil etmek nasıl
GÜNCELLEME aşağıdaki gibi bir ömeği
çıkarıcı normal dizi sınıf eklemek (ör. username
, phone
) öğesinin iç öğesi "$ veya", ortak anahtar adı değildir ve sınıf şablonunu kullanmanın bir yolunu bulamadım.
Bunun neden normal bir dizi olmadığını düşünüyorsunuz? Bir belge bir dizi değil. Tüm belge anahtarlarının bir dizideki bağımsız öğeler olarak nasıl temsil edileceğini mi soruyorsunuz? –
@BlakesSeven, Bir örnek ekledim. Neyin merak ettiğimi ifade edeceğini düşünüyorum. – LoranceChen
Aslında kodu kendim test etmeden, çıktının aslında "array" adlı anahtarı içerdiğini mi söylüyorsun? Öyle olsa bile, JsonArray (isimler) 'den gelen çıktı doğrudan "$ veya" (bir dizi belge kullanan) girdisi olarak oluşturulur. Bu en basit kullanım olarak görünüyor. –