public static String toJsonString(Object obj) {
Gson gson = new Gson();
return gson.toJson(obj);
}
使用此方法
杰森利泽
然后用这个
德杰森利泽
Gson gson = new Gson();
gson.fromJson(this.getThreadDumpVoJson(), ThreadDumpVo.class);
一切都很好,直到我添加了一个新字段
ThreadDumpVo
Map<StackStatePair, Integer> traceStatePairSortedSizeGroup;
然后
Exception
抛出如下:
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1540 path $.traceStatePairSortedSizeGroup.
这个
StackStatePair
定义如下:
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class StackStatePair {
String callStack;
String state;
}
以前我试着用
import javafx.util.Pair;
但这也引发了同样的问题,这里发生了什么?
我不能用
混合成的
钥匙?
"traceStatePairSortedSizeGroup": {
"StackStatePair(callStack\u003dDeadLoopThread.lambda$createBusyThread$0(DeadLoopThread.java:7)|DeadLoopThread$$Lambda$1/2080166188.run(Unknown Source)|java.lang.Thread.run(Thread.java:748), state\u003dRUNNABLE)": 1,
"StackStatePair(callStack\u003djava.lang.Object.wait(Native Method)|java.lang.Object.wait(Object.java:502)|java.lang.ref.Reference.tryHandlePending(Reference.java:191)|java.lang.ref.Reference$ReferenceHandler.run(Reference.java:153), state\u003dWAITING)": 1,
"StackStatePair(callStack\u003djava.lang.Object.wait(Native Method)|java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143)|java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:164)|java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:209), state\u003dWAITING)": 1
}