问题:在Android(Scala)应用程序中使用lift-json“提取”JSON

问题:在Android(Scala)应用程序中使用lift-json“提取”JSON,第1张

概述我想使用lift-json库反序列化 JSON-String.在我的 Android应用程序中,我使用的是Scala 2.9.0和lift-json_2.9.0_2.4-M1. 我从lift-json自述文件中得到了一个简单的例子,但每当我尝试从JSON-String中提取值时,我在调用Activity时会得到一个net.liftweb.json.MappingException.似乎没有传递给“ 我想使用lift-Json库反序列化 JSON-String.在我的 Android应用程序中,我使用的是Scala 2.9.0和lift-Json_2.9.0_2.4-M1.

我从lift-Json自述文件中得到了一个简单的例子,但每当我尝试从JsON-String中提取值时,我在调用Activity时会得到一个net.liftweb.Json.MapPingException.似乎没有传递给“提取”的args.

这是我的活动:

import _root_.androID.app.Activityimport _root_.androID.os.Bundleimport net.liftweb.Json._class JsonTest extends Activity {  overrIDe def onCreate(savedInstanceState: Bundle) {    super.onCreate(savedInstanceState)    setContentVIEw(R.layout.mainactivity)    implicit val formats = DefaultFormats    case class NumList(numbers: List[Int])    val Json = parse(""" { "numbers" : [1,2,3,4] } """)    Json.extract[NumList]  }}

这是我得到的例外:

06-29 12:09:31.548: ERROR/AndroIDRuntime(405): FATAL EXCEPTION: main    java.lang.RuntimeException: Unable to start activity ComponentInfo{de.fhs.spirit/de.fhs.spirit.JsonTest}: net.liftweb.Json.MapPingException: Parsed JsON values do not match with class constructor    args=    arg types=    constructor=public de.fhs.spirit.JsonTest$NumList(de.fhs.spirit.JsonTest,scala.collection.immutable.List)    at androID.app.ActivityThread.performlaunchActivity(ActivityThread.java:2663)    at androID.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)    at androID.app.ActivityThread.access00(ActivityThread.java:125)    at androID.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)    at androID.os.Handler.dispatchMessage(Handler.java:99)    at androID.os.Looper.loop(Looper.java:123)    at androID.app.ActivityThread.main(ActivityThread.java:4627)    at java.lang.reflect.Method.invokeNative(Native Method)    at java.lang.reflect.Method.invoke(Method.java:521)    at com.androID.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)    at com.androID.internal.os.ZygoteInit.main(ZygoteInit.java:626)    at dalvik.system.NativeStart.main(Native Method)    Caused by: net.liftweb.Json.MapPingException: Parsed JsON values do not match with class constructor    args=    arg types=    constructor=public de.fhs.spirit.JsonTest$NumList(de.fhs.spirit.JsonTest,scala.collection.immutable.List)    at net.liftweb.Json.Meta$.fail(Meta.scala:185)    at net.liftweb.Json.Extraction$.instantiate(Extraction.scala:257)    at net.liftweb.Json.Extraction$.newInstance(Extraction.scala:280)    at net.liftweb.Json.Extraction$.build(Extraction.scala:298)    at net.liftweb.Json.Extraction$.extract0(Extraction.scala:345)    at net.liftweb.Json.Extraction$.net$liftweb$Json$Extraction$$extract0(Extraction.scala:194)    at net.liftweb.Json.Extraction$.extract(Extraction.scala:42)    at net.liftweb.Json.JsonAST$JValue.extract(JsonAST.scala:290)    at de.fhs.spirit.JsonTest.onCreate(JsonTest.scala:16)    at androID.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)    at androID.app.ActivityThread.performlaunchActivity(ActivityThread.java:2627)    ... 11 more

如果你有一个想法如何解决我的问题会很棒.
谢谢!

问候,
Illaz

解决方法 我怀疑lift在这种模式下使用反射.它在AndroID中可能根本不起作用,或者它可能要求删除一些被删除的东西.我建议你尝试使用其他一些替代品.

另见this question – 我的怀疑来自于它在REPL上不起作用的说法.并非REPL没有反射,但其包结构可能会使lift库混乱.

总结

以上是内存溢出为你收集整理的问题:在Android(Scala)应用程序中使用lift-json“提取”JSON全部内容,希望文章能够帮你解决问题:在Android(Scala)应用程序中使用lift-json“提取”JSON所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1126327.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存