最小代码如下:
import java.util.*;
import java.lang.reflect.Type;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
class LOV {
List<String> values;
public LOV(List<String> values) {
this.values = values;
}
}
public class FooMain {
private static final Gson gson = new GsonBuilder().serializeNulls().create();
@SuppressWarnings("unchecked")
public static <T> T fromJson(String json, Class<T> classOfT) {
T target = (T) gson.fromJson(json, (Type) classOfT);
return target;
}
public static void main(String args[]) {
List<String> values = new ArrayList<>();
values.add("\"foo\"");
LOV lov = new LOV(values);
String s = gson.toJson(lov);
System.out.printf("Stringified JSON is: [%s]\n", s);
LOV lov2 = fromJson(s, LOV.class);
}
}
…上面的代码表明序列化和反序列化是可能的,并且有效。我还为LOV类编写了一个equals
方法,以确定重新内部化的对象(lov2
)与最初序列化的对象相等(事实上,我只是跳过这段代码以保持简短)。
上面的代码打印在控制台上:
Stringified JSON is: [{"values":["\"foo\""]}]
JSON.parse('{"values":["\"foo\""]}');
Uncaught SyntaxError: Unexpected token f in JSON at position 13(…)
s.replace("\\", "\\\\")
s.replace("\"", "\\\"")
s.replace("'", "\\'")
JSON.parse('the string literal prepared by Java'.replace(/\t/g, "\\t"));
这是有效的,但越来越复杂,我不确定我已经涵盖了所有的情况,所以最后我只是使用了StringEscapeEutils.EscapeEcmaScript,它就像一个魅力一样有效。使用escapeecmaScript
,在JavaScript端使用一个简单的json.parse(“Java准备的字符串文字”)
就足够了。
JavaScript的json.parse
需要使用双反斜杠。这应该有效:
json.parse('{“values”:[“\\”foo\\“”]}');
这是因为您还需要转义反斜杠。
我有一个Android应用程序,与Spring开发的RESTAPI联系。应用程序很好地序列化了一个对象,但是Spring应用程序在每个字段不为null时将其解析为null。有什么不对劲?我该怎么办? 这是REST API方法签名:cambioPassword(@quiestHeader(授权)字符串头,PasswordChange userData) 注意:应用程序和API都使用Gson(我没有在
问题内容: 所有,我都有以下输出/字符串(它是JIRA API的响应): 我用于遍历元素并获取值。我在下面的“嵌套对象”示例中编写了类 http://www.javacreed.com/gson-deserialiser- example/ 我能够获得到第二级的元素值。例如:在此级别之前,我能够获得的值以及其他值。我如何获得的价值? 我应该如何构造我的解串器和类。请协助。谢谢。 问题答案: 试试这
使用Spring1.5.8释放Jackson mapper,给出以下异常。 在[源:未知;行:-1,列:-1](通过引用链:com.copart.conversationapi.CallDisposition.model.vo.CallLogEntity[“CallEndTime”]) Callentity.java java pom.xml
有没有一种通用的方法告诉Gson不要写空字符串? 我非常不喜欢实现一个TypeAdapter,它可以像这里的答案所暗示的那样处理每个字段。
我的日期格式为“yyyy-mm-dd't'hh:mm:ss.sssz”。例如日期为“2018-07-17T09:59:51.312Z”。我正在使用下面的代码解析Java中的字符串。
这不是一个重复的问题,请不要标记为重复。这个Json可以用GSON库解析吗?