使用java通过反射创建这样的数据结构{"thing1":{"value":"咔咔618养车节"}, "thing2":{"value":"5月29号开启"}, "thing16":{"value":"人工洗车特惠提前购¥29.9元‼"}, "thing3":{"value":"更多车品优惠点击进入小程序抢购"}}
时间: 2023-08-22 19:06:23 浏览: 147
以下是通过反射创建该数据结构的示例代码(假设该数据结构对应的类名称为MyData):
```java
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;
class MyData {
public Thing1 thing1;
public Thing2 thing2;
public Thing16 thing16;
public Thing3 thing3;
static class Thing1 {
public String value;
}
static class Thing2 {
public String value;
}
static class Thing16 {
public String value;
}
static class Thing3 {
public String value;
}
}
public class Main {
public static void main(String[] args) throws Exception {
Map<String, Map<String, String>> data = new HashMap<>();
data.put("thing1", Map.of("value", "咔咔618养车节"));
data.put("thing2", Map.of("value", "5月29号开启"));
data.put("thing16", Map.of("value", "人工洗车特惠提前购¥29.9元‼"));
data.put("thing3", Map.of("value", "更多车品优惠点击进入小程序抢购"));
MyData myData = new MyData();
for (Map.Entry<String, Map<String, String>> entry : data.entrySet()) {
String fieldName = entry.getKey();
Map<String, String> fieldValue = entry.getValue();
Field field = MyData.class.getField(fieldName);
if (field.getType() == fieldValue.getClass()) {
Object obj = field.getType().getDeclaredConstructor().newInstance();
Field valueField = obj.getClass().getField("value");
valueField.set(obj, fieldValue.get("value"));
field.set(myData, obj);
}
}
System.out.println(myData);
}
}
```
在该示例代码中,我们首先创建了一个名为 data 的 map,其中包含了我们要创建的数据结构的各个字段的值。然后,我们创建了一个空的 MyData 对象,并通过循环遍历 data 中的键值对,根据键名获取 MyData 中相应的字段,并将对应的值设置到该字段中。由于 MyData 中的每个字段都是一个嵌套类,因此我们需要使用反射来创建该字段的实例,并通过反射设置该实例的 value 属性的值。最后,我们输出 MyData 对象,即可得到最终的数据结构。
阅读全文