我有这样的json字符串:
str = {"id" : %s, "name": %s}
我想用值替换格式说明符%s。我有包含要替换的值的数组。
我可以使用
执行此操作str.format(arrayofvalue: _*)
但这仅适用于一种特定类型的格式标识符。
如果我的字符串有多个格式说明符,如(%d,%s)
,该怎么办?str = {"id" : %d, "name": %s}
上面的解决方案在这种情况下不起作用(illegalFormatConversion)。是否有任何功能/工作来处理这个问题。
答案 0 :(得分:1)
如果类型不兼容,则会出现此异常。
val str = "{\"id\" : %d, \"name\": %s}"
val arrayofvalue = Array("1", "a")
val output = str.format(arrayofvalue: _*)
println(output)
// will result in java.util.IllegalFormatConversionException: d != java.lang.String
但如果您提供兼容类型,它将起作用:
val str = "{\"id\" : %d, \"name\": %s}"
val arrayofvalue = Array(1, "a")
val output = str.format(arrayofvalue: _*)
println(output)
答案 1 :(得分:1)
使用str.format(arrayofvalue: _*)
有效。您的问题是您在数组中传入了错误的类型,或者数组中的值顺序错误。
您可以验证它是否适用于此示例:
val str = """{"id" : %d, "name": %s}"""
val arrayOfValue = Array(1, "John")
str.format(arrayOfValue: _*) // returns: {"id" : 1, "name": John}
现在,如果我将arrayOfValue
更改为
val arrayOfValue = Array("1", "John")
(注意参数"1"
现在不是Int而是String),你得到异常java.util.IllegalFormatConversionException: d != java.lang.String
。