我正在使用一个groovy脚本将正文中的一些值转换为它们的原始数据类型。为了实现这一点,我使用了JsonSluper和JsonOutput。JsonSluper和JsonOutput正在将字符串中的一些符号从json主体转换为奇怪的字符。有什么建议可以解决这个问题吗?
示例:“UnitPrice”:“99美分/磅”转换为“UnitPrice”::“99\u00a2每磅”
已转换为
我的脚本:
def body = message.getBody(java.lang.String);
def JSONInput = new JsonSlurper().parseText(body);
JSONInput.data.ProductStorePrices.each{
if(it.Price != null){
it.Price = it.Price.toDouble();
}
if(it.Active != null){
it.Active = it.Active.toBoolean();
}
}
message.setBody(JsonOutput.toJson(JSONInput))
下面是我的转换前JSONbody:
{
"data": {
"ProductStorePrices": [
{
"Product_LegacyID": "1005",
"Store_LegacyStoreID": "2",
"DistributionCenter_LegacyRegionID": "916",
"PriceType_Code": "unadjustedRetail",
"ValidFrom": "2000-01-01T00:00:00Z",
"Price": "9.99",
"ValidTo": "2022-05-04T23:59:59Z",
"Currency": "USD",
"Active": "false",
"UnitPrice": "99¢ per lb.",
"LastChangedAt": "2022-05-04T23:59:59Z"
}
]
}
}
使用上面的groovy脚本转换后我的输出JSONBody
{
"data": {
"ProductStorePrices": [
{
"Product_LegacyID": "1005",
"Store_LegacyStoreID": "2",
"DistributionCenter_LegacyRegionID": "916",
"PriceType_Code": "unadjustedRetail",
"ValidFrom": "2000-01-01T00:00:00Z",
"Price": 9.99,
"ValidTo": "2022-05-04T23:59:59Z",
"Currency": "USD",
"Active": false,
"UnitPrice": "99\u00a2 per lb.",
"LastChangedAt": "2022-05-04T23:59:59Z"
}
]
}
}
这不是奇怪的符号,是独角兽。我正在使用图书馆com.google.code。gson用于这些目的。试试这个:
def gson = new GsonBuilder().disableHtmlEscaping().create()
def json = gson.toJson(JSONInput)
println(json)
输出:< Code > { " data ":{ " productstoreprice ":[{ " Active ":false," Currency":"USD "," distribution center _ LegacyRegionID ":" 916 "," LastChangedAt ":" 2022-05-04t 23:59:59Z "," Price":9.99," Price type _ Code ":" unadjusted retail "," Product_LegacyID":"1005 "," Store _ legacyreid ":" 2 "," UnitPrice ":"每磅99。"、" valid from ":" 2000-01-01t 00:00:00Z "、" valid to ":" 2022-05-04t 23:59:59Z " }]}
问题内容: 我已经将其输入python shell: 我期望0.1 * 0.1不是0.01,因为我知道以10为底的0.1是周期性的,以2为底。 我已经看过20个以上的字符,因此我希望能得到20个。为什么我得到4? 好吧,这解释了为什么我给了我4,但为什么回归? 为什么不回合?(我已经阅读了这个答案,但是我想知道他们如何决定何时对浮点数进行取整,以及何时对不进行浮点取整) 因此,浮子的准确性似乎是一
问题内容: 我有一些奇怪的字符串池行为的问题。我正在使用比较相等的字符串来找出它们是否在池中。 输出为: 这对我来说是一个很大的惊喜。有人可以解释一下吗?我认为这是在编译时发生的。但是,为什么添加到String 根本没有任何区别呢? 问题答案: 是一个编译时常量,而 不是。因此,前者仅编译为字符串常量“ 555”,而后者则编译为实际的方法调用和串联,从而生成一个新的String实例。 另请参见JL
问题内容: 如何将Unicode字符串(包含额外的字符,如£$等)转换为Python字符串? 问题答案:
问题内容: 如何将经典字符串转换为f字符串? 输出: 所需的输出: 问题答案: f字符串是 语法 ,而不是对象类型。您不能将任意字符串转换为该语法,该语法会创建一个字符串对象,而不是相反。 我假设您想用作模板,因此只需在对象上使用方法: 如果要提供可配置的模板服务,请创建一个包含所有可以插值的字段的名称空间字典,并与调用语法一起使用以应用名称空间: 然后,用户可以在字段中的名称空间中使用任何键(或
问题内容: 如何从字符串中删除奇怪的和不需要的Unicode字符(例如带问号的黑色菱形)? 更新: 请告诉我对应于“其中带有问号的黑色菱形”的Unicode字符串或正则表达式。 问题答案: 带问号的黑色菱形不是unicode字符- 它是字体无法显示的字符的占位符。如果字符串中存在一个字形,而该字形不是用于显示该字符串的字体,则将看到占位符。定义为U + FFFD:它的外观取决于您使用的字体。 您可