我不确定为什么以下不起作用。
我只是将响应与一系列值进行比较。响应来自json,前端的成本如下:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[[FBSDKApplicationDelegate sharedInstance] application:application
didFinishLaunchingWithOptions:launchOptions];
return YES;
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
NSLog(@"AppActive");
//NSLog(@"+++ App active Trigger 1");
[FBSDKAppEvents activateApp];
}
FBSDKLog: Failed to send AppEvents: Error Domain=com.facebook.sdk.core Code=8 "(null)" UserInfo={com.facebook.sdk:FBSDKGraphRequestErrorCategoryKey=0, com.facebook.sdk:FBSDKGraphRequestErrorHTTPStatusCodeKey=400, com.facebook.sdk:FBSDKErrorDeveloperMessageKey=(#100) Param extinfo[2] must be an integer, com.facebook.sdk:FBSDKGraphRequestErrorGraphErrorCode=100, com.facebook.sdk:FBSDKGraphRequestErrorParsedJSONResponseKey={
body = {
error = {
code = 100;
"fbtrace_id" = BS3nqPCTUeR;
message = "(#100) Param extinfo[2] must be an integer";
type = OAuthException;
};
};
code = 400;
}}
但是当你抓住它时,它会显示为20, 25, 40, 50
所以我像这样平坦了回应:
[[20.0000, 25.0000, 40.0000, 50.0000]]
输出:
json.groups.options.cost.flatten()
现在我想将上面的内容与一些硬编码值进行比较。所以我创建了这个变量:
[20.0000, 25.0000, 40.0000, 50.0000]
这输出:
def cost = [20, 25, 40, 50].collect { "${it}.0000" }
因此,当我将它们放在一起时,我希望它们可以正常工作,但事实并非如此。
[20.0000, 25.0000, 40.0000, 50.0000]
现在有趣的是,如果我执行相同的断言但成本设置如下:
assert cost == json.groups.options.cost.flatten()
断言通过。为什么它只适用于此,如何使用def cost = [20.0000, 25.0000, 40.0000, 50.0000]
方法以原始方式工作?
答案 0 :(得分:0)
它没有断言,因为您要将List<GString>
与List<BigDecimal>
进行比较。通常,在比较此类列表时,您不必担心小数点,因为:
assert [20, 25, 40, 50] == [20.0000, 25.0000, 40.0000, 50.0000]
其中第一个列表为List<Integer>
,第二个列表为List<BigDecimal>
。
您可以查看json.groups.options.cost.flatten()
的列表类型,如果不是List<BigDecimal>
,则可以通过
json.groups.options.cost.flatten().collect { new BigDecimal(it) }
然后只与[20, 25, 40, 50]