【问题标题】:how to put/update all json attribute from jsonArray如何从 jsonArray 中放置/更新所有 json 属性
【发布时间】:2018-01-05 11:35:43
【问题描述】:

我有一个这样的json:

[
    {
        "firstName":"Pierre",
        "age":"20",
        "timestamp": "123"
    },
    {
        "firstName":"Jack",
        "age":"20",
        "timestamp": "123"
    },  
    {
        "firstName":"Olive",
        "age":"20",
        "timestamp": "123"
    },  
    {
        "firstName":"Tom",
        "age":"20",
        "timestamp": "123"
    }
]

我想将所有属性时间戳更新为 456。然后我创建如下代码:

   import org.json.simple.{JSONArray, JSONObject}

   myJsonArray.forEach {
      obj =>
        val jsonObject = obj.asInstanceOf[JSONObject]
        val jsonMap = jsonObject.asInstanceOf[java.util.HashMap[String,Any]]
        jsonMap.put("timestamp",456)

    }

但我在编译:

Error:(31, 7) missing parameter type
      obj =>

你有什么想法吗?还是其他实现?

【问题讨论】:

    标签: json scala


    【解决方案1】:

    您的 JSON 已损坏,"age":"20" 字段后应该有一个逗号。 因此,在更正之后,您可以使用以下内容来更新您的 JSON。这里我使用了jackson库进行JSON解析。

    import com.fasterxml.jackson.databind.ObjectMapper
    import com.fasterxml.jackson.module.scala.DefaultScalaModule
    import com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper
    
    val objectMapper = new ObjectMapper() with ScalaObjectMapper
    objectMapper.registerModule(DefaultScalaModule)
    val str = "[{\"firstName\":\"Pierre\",\"age\":\"20\",\"timestamp\":\"123\"},{\"firstName\":\"Jack\",\"age\":\"20\",\"timestamp\":\"123\"},{\"firstName\":\"Olive\",\"age\":\"20\",\"timestamp\":\"123\"},{\"firstName\":\"Tom\",\"age\":\"20\",\"timestamp\":\"123\"}]"
    //convert JSON string to Map(String,String) 
    val jsonMap = objectMapper.readValue(str, classOf[Array[Map[String, String]]])
    //Overwrite the key time-stamp in the given Map
    val changedMap = jsonMap.map(_ ++ Map("timestamp" -> "466"))
    //Convert the Map again to string
    val jsonString = objectMapper.writeValueAsString(changedMap)
    
    println(jsonString)
    //output
    //[{"firstName":"Pierre","age":"20","timestamp":"466"},{"firstName":"Jack","age":"20","timestamp":"466"},{"firstName":"Olive","age":"20","timestamp":"466"},{"firstName":"Tom","age":"20","timestamp":"466"}]
    

    【讨论】:

    • 你知道我是否想得到一个 JSONARRAY 尽管有一个 json 字符串?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-06
    相关资源
    最近更新 更多