c++ json value类型允许重新赋值吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++ json value类型允许重新赋值吗相关的知识,希望对你有一定的参考价值。

参考技术A 可以使用jsoncpp类来处理json: string strJ("[1,2,3]"); Json::Reader reader; Json::Value root; if(!reader.parse(strJ,root)) return -1; int size = root.size(); for(int i=0; i本回答被提问者采纳

java给ParamMap<String, ?>的value赋值,put String类型报错,说required: ?,泛型不是方便用各种类型吗

如下excel_data 变量的类型是List<ParamMap<String, ?>>:
public static List<ParamMap<String, ?>> excel_data = ExcelMapProvider .getTableData("test_data/data_prepare/genSku.xls");

ParamMap类是继承HashMap:ParamMap<String, T> extends HashMap<String, T> ...

问题:实际excel_data是从excel获取的对象,实际只有1行,所以只有0一个索引,现在想给excel_data增加1个key是"timestamp",赋值为String类型如下,
String timestamp = Long.toString(System.currentTimeMillis());excel_data.get(0).put("timestamp",timestamp);

编译报错,如截图,请大神帮忙解答,急,感谢。

参考技术A 你泛型基础没学好,通配符它分三种意思!
? 无界;
? extends Person 上界
? super Person 下界
无界:不能使用对象独有的方法
上界:不能使用put,add这些类似的操作;
下界:不能使用,get类似的操作;

比如你的:
public static List<ParamMap<String, ?>> excel_data =
ExcelMapProvider .getTableData("test_data/data_prepare/genSku.xls");
这个操作是绝对不允许的,因为你这个是无界;追问

哦,我的目的是要给ParamMap对象put个String value要怎么做啊

追答

你要单纯的put的没别的需求,就用下界,就可以了!

参考技术B 在Java集合框架中,对于参数值是未知类型的容器类,只能读取其中元素,不能向其中添加元素, 因为,其类型是未知,所以编译器无法识别添加元素的类型和容器的类型是否兼容,唯一的例外是NULL
你这个可以put进去个null,但是不能放其他任何类型的值

以上是关于c++ json value类型允许重新赋值吗的主要内容,如果未能解决你的问题,请参考以下文章

C++ tbb::atomic<bool> 声明读取重新赋值

Java:请教关于String对象的重新赋值

vue3.0数组清空与重新赋值

arcengine 怎么给图层的一个字段 重新赋值

Kotlin语法学习

数组重新赋值失败