有class A{String aa;B bb;},class B{String a;String b;String c;},将一个A类型的参数D通过JSON.toJSONString(D)转换为String d,现需将d重新拆分成A类型的参数,怎么写
时间: 2024-12-18 19:28:25 浏览: 4
浅谈java中String的两种赋值方式的区别
要将从JSON字符串`d`反序列化回`A`类型的对象,你需要先创建一个`A`类的对象实例,然后利用`ObjectMapper`(如果使用的是Java的Jackson库)或者`Gson`(如果是Google的Gson库)进行解码。这里是一个使用`Jackson`的例子:
```java
import com.fasterxml.jackson.databind.ObjectMapper;
public class Main {
public static void main(String[] args) {
// 假设你已经有了 JSON 字符串 d
String d = ...; // 这里是你获取到的JSON字符串
ObjectMapper mapper = new ObjectMapper();
try {
// 使用ObjectMapper将JSON字符串解析成Map<String, Object>
Map<String, Object> jsonMap = mapper.readValue(d, Map.class);
// 由于我们知道A类的结构,可以逐个创建对应的对象并设置值
A a = new A();
a.aa = (String) jsonMap.get("aa");
B b = new B();
b.a = (String) jsonMap.get("bb.a");
b.b = (String) jsonMap.get("bb.b");
b.c = (String) jsonMap.get("bb.c");
a.bb = b; // 将B对象赋给A的bb字段
// 现在a就是你想要的A类型的参数了
System.out.println(a);
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
这里假设JSON的结构与`A`和`B`类的成员一一对应。如果你的JSON结构有所不同,你需要调整键名以匹配实际的属性。
阅读全文