找到 2637 篇文章 关于 Java
2K+ 次浏览
可以注册 `DeserializationProblemHandler` 类,以便在反序列化过程中遇到潜在的可恢复问题时被调用。我们可以通过实现 `DeserializationProblemHandler` 类的 `handleUnknownProperty()` 方法来处理 JSON 反序列化过程中生成的错误。语法:`public boolean handleUnknownProperty(DeserializationContext ctxt, JsonParser p, JsonDeserializer deserializer, Object beanOrClass, String propertyName) throws IOException` 示例:`import java.io.*; import com.fasterxml.jackson.core.*; import com.fasterxml.jackson.databind.*; import com.fasterxml.jackson.databind.deser.*; public class DeserializationErrorTest { public static void main(String[] args) throws JsonMappingException, JsonGenerationException, IOException { String jsonString = "{\"id\":\"101\", \"name\":\"Ravi Chandra\", \"address\":\"Pune\", \"salary\":\"40000\" }"; ObjectMapper objectMapper = new ObjectMapper(); DeserializationProblemHandler deserializationProblemHandler = new UnMarshallingErrorHandler(); ... 阅读更多
3K+ 次浏览
`ObjectMapper` 类提供在 Java 对象和匹配的 JSON 结构之间进行转换的功能。我们可以使用树状数据结构来实现将由对象模型表示的 JSON 数据映射到特定的 Java 对象,该数据结构读取并将整个 JSON 内容存储在内存中。第一步,将 JSON 数据读入 `JsonNode` 对象,然后通过调用 `ObjectMapper` 类的 `treeToValue()` 方法将其映射到另一个实例。语法:`public T treeToValue(TreeNode n, Class valueType) throws JsonProcessingException` 示例:`import java.io.*; import com.fasterxml.jackson.core.*; import com.fasterxml.jackson.databind.*; public class JsonTreeModelDemo { public static void main(String[] args) throws JsonProcessingException, IOException { String jsonString ... 阅读更多
753 次浏览
`JsonParserSequence` 是一个辅助类,可用于创建一个包含按特定顺序排列的两个子解析器的解析器。我们可以使用 `JsonParserSequence` 类的静态方法 `createFlattened()` 创建一个序列。语法:`public static JsonParserSequence createFlattened(JsonParser first, JsonParser second)` 示例:`import java.io.*; import com.fasterxml.jackson.core.*; import com.fasterxml.jackson.core.util.*; public class JsonParserSequenceTest { public static void main(String[] args) throws JsonParseException, IOException { String jsonString1 = "{\"id\":\"101\", \"name\":\"Ravi Chandra\", \"address\":\"Pune\"}"; String jsonString2 = "{\"id\":\"102\", \"name\":\"Raja Ramesh\", \"address\":\"Hyderabad\", \"contacts\":[{\"mobile\":\"9959984805\", \"home\":\"7702144400\"}]}"; JsonFactory jsonFactory = new JsonFactory(); JsonParser jsonParser1 = jsonFactory.createParser(jsonString1); JsonParser jsonParser2 = jsonFactory.createParser(jsonString2); ... 阅读更多
914 次浏览
`FieldNamingStrategy` 是一种在 Gson 中提供自定义字段命名的机制。这允许客户端代码将字段名转换为不受标准 Java 字段声明规则支持的特定约定。`translateName()` 方法将为每个字段名称添加前缀“pre_”。在下面的示例中,我们可以实现自定义 `FieldNamingStrategy`。示例:`import java.lang.reflect.Field; import com.google.gson.*; public class GsonFieldNamingStrategyTest { public static void main(String[] args) { Employee emp = new Employee(); emp.setEmpId(115); emp.setFirstName("Adithya"); emp.setLastName("Jai"); CustomFieldNamingStrategy customFieldNamingStrategy = new CustomFieldNamingStrategy(); ... 阅读更多
361 次浏览
JSON 解析器的所有默认设置都可以使用 `JsonParser.Feature` 枚举表示。`JsonParser.Feature.values()` 将返回可用于 `JSONParser` 的所有功能,但是可以使用 `JsonParser` 的 `isEnabled()` 方法确定特定解析器是否启用或禁用某个功能。语法:`public static enum JsonParser.Feature extends Enum` 示例:`import com.fasterxml.jackson.core.*; import java.io.*; public class JsonParserSettingsTest { public static void main(String[] args) throws IOException { String json = "[{\"name\":\"Adithya\", \"age\":\"30\"}, " + "{\"name\":\"Ravi\", \"age\":\"35\"}]"; JsonFactory jsonFactory = new JsonFactory(); JsonParser jsonParser = jsonFactory.createParser(json); for(JsonParser.Feature feature : JsonParser.Feature.values()) { ... 阅读更多
873 次浏览
`JsonFactory` 类是线程安全的,负责创建写入器和读取器的实例。可以在枚举 `JsonFactory.Feature` 中找到可以启用/禁用的设置列表,它包含静态方法 `values()`,该方法返回此类型的枚举常量数组。语法:`public static enum JsonFactory.Feature extends Enum` 示例:`import com.fasterxml.jackson.core.JsonFactory; public class JsonFactorySettingsTest { public static void main(String[] args) { JsonFactory jsonFactory = new JsonFactory(); for(JsonFactory.Feature feature : JsonFactory.Feature.values()) { boolean result = jsonFactory.isEnabled(feature); System.out.println(feature.name() + ":" + result); } } }` 输出:`INTERN_FIELD_NAMES:true ... 阅读更多
1K+ 次浏览
Gson 库提供命名约定作为枚举 `FieldNamingPolicy` 的一部分。我们可以使用 `GsonBuilder` 类的 `setFieldNamingPolicy()` 方法设置字段命名策略。`FieldNamingPolicy` 枚举常量:`IDENTITY` - 使用此命名策略,字段名称保持不变。`LOWER_CASE_WITH_DASHES` - 使用此命名策略,将 Java 字段名称从驼峰式形式修改为小写字段名称,每个单词之间用短横线 (-) 分隔。`LOWER_CASE_WITH_UNDERSCORES` - 使用此命名策略,将 Java 字段名称从驼峰式形式修改为小写字段名称,每个单词之间用下划线 (_) 分隔。`UPPER_CAMEL_CASE` - 使用此命名策略,... 阅读更多
308 次浏览
`JsonGenerator` 类负责将 JSON 数据作为流写入,而不是在内存中构建对象模型。可以在枚举 `JsonGenerator.Feature` 中找到可以启用/禁用的设置列表,它包含静态方法 `values()`,该方法返回包含此枚举类型常量的数组。语法:`public static enum JsonGenerator.Feature extends Enum` 示例:`import java.io.*; import com.fasterxml.jackson.core.*; public class JsonGeneratorSettingsTest { public static void main(String[] args) throws IOException { StringWriter writer = new StringWriter(); JsonFactory jsonFactory = new JsonFactory(); JsonGenerator jsonGenerator = jsonFactory.createGenerator(writer); for(JsonGenerator.Feature feature : JsonGenerator.Feature.values()) { ... 阅读更多
631 次浏览
`JSONPointer` 是一种标准,它定义了一种字符串语法,可用于访问 JSON 文档中的特定键值。可以通过在 `Json` 类上调用静态工厂方法 `createPointer()` 来创建 `JSONPointer` 的实例。在 `JSONPointer` 中,每个字符串语法都以“/”为前缀。我们可以通过调用 `JsonPointer` 对象的 `getValue()` 方法来获取键的值。JSON 文件示例:`import javax.json.*; import java.io.*; public class JsonPointerTest { public static void main(String[] args) throws Exception { JsonReader jsonReader = Json.createReader(new FileReader("simple.json")); JsonStructure jsonStructure = jsonReader.read(); JsonPointer jsonPointer1 ... 阅读更多
519 次浏览
JsonPatch 接口是一种用于存储一系列操作的格式,这些操作可以应用于目标 JSON 结构。JsonPath 中可以存储一些操作,例如添加、删除、替换、复制、移动和测试,并对 JSON 结构进行操作。JsonPatchBuilder 接口可用于使用 Json.createPatchBuilder() 构造 JSON patch。JSON 文件示例 import java.io.*; import javax.json.Json; import javax.json.JsonPatch; import javax.json.JsonPatchBuilder; import javax.json.JsonReader; import javax.json.JsonStructure; public class JsonPatchTest { public static void main(String[] args) throws Exception { JsonPatchBuilder jsonPatchBuilder = Json.createPatchBuilder(); JsonPatch jsonPatch = jsonPatchBuilder.add("/postalCode", "500072").remove("/age").build(); JsonReader reader = Json.createReader(new FileReader("simple.json")); ... 阅读更多