按照Firebase reference/example code on github中的建议,在Web视图中记录两次以进行Firebase分析,这将导致值最终取决于值而位于不同的值字段中。原因是javascript具有数字类型,并且当值是整数时不显示小数(即5.00表示为5,而5.01表示为5.01)。在网络视图中使用logEvent()记录参数时,AnalyticsWebInterface.java将测试参数值是String,Integer还是Double,并将值存储在相应的字段(stringValue,intValue或floatValue)中。因此,如果您将产品的价格记录为参数,如果价格为5.00,则它将最终为intValue;如果价格为5.01,则将最终为floatValue。这确实会使该数据的分析复杂化。
Object value = jsonObject.get(key);
if (value instanceof String) {
result.putString(key, (String) value);
} else if (value instanceof Integer) {
result.putInt(key, (Integer) value)
} else if (value instanceof Double) {
result.putDouble(key, (Double) value);
} else {
Log.w(TAG, "Value for key " + key + " not one of [String, Integer, Double]");
}
答案 0 :(得分:1)
解决该问题的一种可能方法是尝试强制转换值(如果它是String或Integer)并将其记录到多列中。示例:
if (value instanceof String) {
try{
result.putString(key, (String) value);
result.putDouble(key, Double.parseDouble((String) value));
result.putInt(key, Integer.parseInt((String) value));
} catch(Exception e){}
}
if (value instanceof Integer) {
try{
result.putInt(key, (Integer) value);
result.putDouble(key, Double.valueOf((Integer) value));
}catch(Exception e){}
}
if (value instanceof Double){
result.putDouble(key, (Double) value);
}