让我用一个例子来解释这个问题.如果我有如下的JSON:
{"person1":{"name":"Name One","address":{"street":"Some Street","city":"Some City"}},
"person2":{"name":"名称两个","地址":{"street":"Some Other Street","city":"Some Other City"}}}
[对人数没有限制,输入JSON可以有更多人]
我可以通过这样做将这个JSON提取到Persons对象
var persons = parse(res).extract [T]
以下是相关的案例类:
case class Address(street:String,city:String)
case类Person(name:String,address:Address,children:List [Child])
case class Persons(person1:person,person2:Person)
问题:上述情况完全正常.然而,需要的是密钥/值对中的密钥是动态的.所以在提供的示例JSON中,person1和person2可以是任何东西,我需要动态地读取它们.人类课程考虑到这种动态性质的最佳结构是什么.
当我运行时sbt doc,它会产生一个很好但非常基本的文档.是否有可能
a)包括类定义的源文件和
b)继承继承成员的文档字符串?
我需要将哪些内容添加到项目定义中?
(这是一个Lift项目,所以最重要的是将继承的Lift文档字符串存在.)
如何在Lift中输出模板中的事物列表?
比方说我有List [User],我想把它作为一个表输出.在Django中,我将使用上下文变量"users"并在模板中迭代它,如下所示:
//controller
user = User.objects.all()
context = {'users' : users}
return render_to_template('results.html', context}
//view
<table>
{% for user in users %}
<tr><td>{{user.name}}</td>
<td>{{user.email}}</td>
</tr>
{% endfor %}
</table>
Run Code Online (Sandbox Code Playgroud)
我感谢任何帮助.
PS:你能不能给我看一个scala方面的例子 - 因为我对如何处理这个问题毫无头绪.
我对Scala Lift中的https几乎没有疑问:
如何为我的Web应用程序设置仅使用https协议?
我是否必须为使用https的现有应用程序重写一些代码?
请求响应周期是变更还是没有任何差异?
哪里可以使用https找到好的scala lift开源项目或者只是为了看看框架的高级使用?
谢谢.
我试图从字符串中提取网址,它们不是标准化的,因此有些是在href标记内,有些是在自己的标记内.
另外我需要按类型对它们进行排序,例如以下字符串:
var txt1: String = "Some text! <a href="http://www.google.com/test.mp3">MP3</a>"
var txt2: String = "Some text! <a href="http://www.google.com/test.jpg">IMG</a>"
var txt3: String = "Some more! <a href="http://www.google.com/">Link!</a>"
Run Code Online (Sandbox Code Playgroud)
所以这些字符串都连接在一起并包含3个网址,我正在寻找以下内容:
var result: List = List(
"mp3" -> List("http://www.google.com/test.mp3"),
"img" -> List("http://www.google.com/test.jpg"),
"url" -> List("http://www.google.com/")
)
Run Code Online (Sandbox Code Playgroud)
我已经研究了正则表达式,但只是在没有定义类型的情况下提取hrefs,而且这也没有在标签之外自己检索url
val hrefRegex = new Regex("""\<a.*?href=\"(http:.*?)\".*?\>.*?\</a>""");
val hrefs:List[String]= hrefRegex.findAllIn(txt1.mkString).toList;
Run Code Online (Sandbox Code Playgroud)
非常感谢任何帮助,在此先感谢:)
我在Scala 中使用Mapper创建了一个表.
class Stage extends Mapper[Stage]
{
def getSingleton = Stage
object controlId extends MappedLongForeignKey (this,Control) {
override def dbNotNull_? = true
override def dbColumnName = "control_id"
}
}
Run Code Online (Sandbox Code Playgroud)
但是我的表没有为数据库中的foreignKey键创建约束.
作为测试,我正在尝试使用设计师友好的模板在电梯中创建一个表单.我正在使用Lift 2.5
我已经设法使用toForm创建一个工作表单,但我只是在探索所有可能的方法.
我的html文件包含以下代码:
...
<span class="lift:Util.entry?form=post">
<span id="etitle"></span>
<span id="ebody"></span>
<span id="esubmit"></span>
</span>
...
Run Code Online (Sandbox Code Playgroud)
在我的Util.scala中,我定义了如下的条目片段:
def entry = {
"#etitle *" #> SHtml.text(title, title = _)
"#ebody *" #> SHtml.text(body, body = _)
"#submit *" #> SHtml.submit("Save", saveEntry)
}
Run Code Online (Sandbox Code Playgroud)
所有的跨度都是空的; 我究竟做错了什么?
谢谢!
我即将在Lift框架中开始我的第一个项目,我必须决定选择哪个持久性库.我即将使用关系后端,因此Mapper和Record都可以发挥作用.
在Mapper的情况下 - 我最想念的是能够控制发送到RDBMS的查询 - 特别是当涉及更复杂的查询时,这些查询将通过SQL中的连接,聚合等来解决.举几个例子 - 让我们有两个实体:
class BaseProduct extends LongKeyedMapper[BaseProduct] with IdPK {
// some fields
}
object BaseProduct extends BaseProduct with LongKeyedMetaMapper[BaseProduct]
class MyProduct extends LongKeyedMapper[MyProduct] with IdPK {
// some fields
object base extends MappedLongForeignKey(this, BaseProduct)
}
object MyProduct extends MyProduct with LongKeyedMetaMapper[MyProduct]
Run Code Online (Sandbox Code Playgroud)
其中MyProduct一个BaseProduct实体的专业化.这些实体之间显然存在一对一的关系.然而,我想出的最好的可能性是MyProduct与它一起查询确切的BaseProduct是这样的查询:
MyProduct.findAll(PreCache(MyProduct.base))
Run Code Online (Sandbox Code Playgroud)
哪个发出两个查询(而且我担心我无法控制MyProduct我想要选择的实体的哪些字段.
对Mapper库来说已经够糟了.我对Record/Squeryl API的主要关注是它缺少ProtoMapper API周围存在的所有类.是否有一些接近这些类的功能的记录?是否可以访问Squeryl中的数据库特定功能(例如PostgreSQL中的几何查询)?
这些层中的任何一层都有其他优缺点吗?还是有,如果我想有与数据库和通信体面类型安全的封装将提供体面的控制权查询(我是用来发出直接使用PHP的PDO层查询这将值得关注任何其他抽象层 - 我不想要这样的直接查询界面,但是控制查询的一些可能性很大.与Lift框架的集成绝对是一个优势.
谢谢!
我有以下数据结构:
val jsonStr = """
{
"data1": {
"field1": "data1",
"field2": 1.0,
"field3": true
},
"data211": {
"field1": "data211",
"field2": 4343.0,
"field3": false
},
"data344": {
"field1": "data344",
"field2": 436778.51,
"field3": true
},
"data41": {
"field1": "data41",
"field2": 14348.0,
"field3": true
}
}
"""
Run Code Online (Sandbox Code Playgroud)
我想要提取它.这是我正在做的没有任何运气:
#1.
case class Fields(field1: String, field2: Double, field3: Boolean)
json.extract[Map[String, Map[Fields, String]]]
//org.json4s.package$MappingException: Do not know how to convert JBool(true)
//into class java.lang.String
#2.
json.extract[Map[String, Map[String, Fields]]
//java.lang.InternalError: Malformed class name
#3.
json.extract[Map[String, Map[String, Any]]] …Run Code Online (Sandbox Code Playgroud) 当我阅读Liftweb的源代码时,我发现了一些特征声明:
trait ValueHolder {
type ValueType
def get: ValueType
}
trait PValueHolder[T] extends ValueHolder {
type ValueType = T
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,对于以下两个特征声明:
trait ValueHolder {
type ValueType
}
trait ValueHolder[T] {
}
Run Code Online (Sandbox Code Playgroud)
我认为它们彼此相同,但它们之间有什么区别吗?一个人可以做或提供另一个人不能做的事情吗?