首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Json to Scala case类对象处理字段名中的特殊字符

Json to Scala case类对象处理字段名中的特殊字符
EN

Stack Overflow用户
提问于 2016-07-15 07:51:09
回答 3查看 1K关注 0票数 0

样本Json:

var testString ={“eventType”:“eventType”,

Scala案例类:

代码语言:javascript
复制
case class EventHeader(eventType:String,event-id:String)

反序列化代码:

代码语言:javascript
复制
var header = new Gson().fromJson(testString,classOf[EventHeader])

导致以下错误(因为"event-id“字段名中的特殊字符):

:1:错误:“:”预期,但找到标识符。case类EventHeader(事件类型:String,event-id:String)

在Java中,我们可以对"eventId“字段进行注释,并将其命名为”eventId“或"id”。

在Scala中有类似的方法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-07-15 09:35:26

代码语言:javascript
复制
scala> case class EventHeader(eventType:String,`event-id`:String)
defined class EventHeader

scala> EventHeader("some event", "eventid")
res1: EventHeader = EventHeader(some event,eventid)

注意event-id在case类声明中的引号

票数 2
EN

Stack Overflow用户

发布于 2016-07-16 13:06:59

代码语言:javascript
复制
import com.fasterxml.jackson.annotation._
import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.module.scala.DefaultScalaModule

case class EventHeader(@JsonProperty("event-id") eventId: String,@JsonProperty("eventType") eventType:String)

val mapper = new ObjectMapper                    
mapper.registerModule(DefaultScalaModule)         
val obj = mapper.readValue("""{"eventType":"REQUEST","event-id":"6e904afa-62e8-40fb-8c6a-66a2ba21a3e1"}""", classOf[EventHeader])
票数 2
EN

Stack Overflow用户

发布于 2019-07-02 11:46:22

使用Gson

代码语言:javascript
复制
 import com.google.gson.Gson

 case class Request(command_type: String, sub_commands: 
 java.util.ArrayList[Command])

 new Gson().toJson(new Request("Command", subCommands))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38390703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档