Server:
@RequestMapping(value = { "/hygiene/{phone}" }, method = {RequestMethod.POST },produces="application/json") @ResponseBody public PhoneResult hygiene(@PathVariable("phone")String phoneObject) { PhoneResult result = new PhoneResult(); try { ObjectMapper mapper = new ObjectMapper(); Phone phone = mapper.readValue(phoneObject, Phone.class); result.setRawPhoneNumber(phone.getPhoneNumber()); result.setFormat("4+4+4"); result.setCleanInternationalNumber("86 0513 23234442"); result.setCleanNationalNumber("0513 23423423"); result.setPreferredPresentation("513 234234234"); }catch (Exception e) { e.printStackTrace(); result.setCleanInternationalNumber("error"); } return result; }
Client:
MultiValueMap<String,Object> dataMap2 = new LinkedMultiValueMap<String, Object>(); Phone p = new Phone(); p.setPhoneNumber("0513 23423423"); dataMap2.add("phone", JsonUtil.javaToJson(p)); HttpEntity<Object> entity2 = new HttpEntity<Object>(dataMap2); PhoneResult result = this.restTemplate.postForObject("http://localhost:8080/restServer/helloworld/hygiene/{phone}.spring", entity2, PhoneResult.class, dataMap2);
public static String javaToJson(Object o) throws Exception{ StringWriter writer = new StringWriter(); ObjectMapper mapper = new ObjectMapper(); mapper.writeValue(writer, o); String json=writer.toString(); return json; }
遇到的异常: server端转化json失败:
org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of com.pojo.Phone out of START_ARRAY token at [Source: java.io.StringReader@55afbf49; line: 1, column: 1] at org.codehaus.jackson.map.JsonMappingException.from(JsonMappingException.java:163) at org.codehaus.jackson.map.deser.StdDeserializationContext.mappingException(StdDeserializationContext.java:198) at org.codehaus.jackson.map.deser.BeanDeserializer.deserializeUsingCreator(BeanDeserializer.java:565) at org.codehaus.jackson.map.deser.BeanDeserializer.deserialize(BeanDeserializer.java:365) at org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:2391) at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1591) at com.acxiom.rest.controller.HelloWorldController.hygiene(HelloWorldController.java:52)
Debug了一下程序,发现传进来的json字符串是数组格式的:
[{"phoneNumber":"0513 XXXXX","phoneType":"1","countryCode":"1","geoOption":"1","defaultOption":"1","geoLat":"1","geoLong":"1"}]
果断修改了Server端代码:
ObjectMapper mapper = new ObjectMapper(); Phone phone = mapper.readValue(phoneObject, Phone[].class)[0];
问题解决。
相关推荐
标题中的"ZUI2_JSON2_/UI2/CL_JSON_ui2/cl_json_abap_Ui2_cl_json_zui2_json_源"可能指的是一个与ZUI2相关的项目,它利用了ABAP类/UI2/CL_JSON来解析和生成JSON数据。描述中提到,我们需要用到这个类来将JSON格式的...
:bowl_with_spoon: deserialize-json-api 不可变的json:api反序列化器 符合 将包含的对象映射到资源 不改变原始响应对象 安装 yarn add deserialize-json-api 用法 import { deserialize } from "deserialize-json...
网络最大流问题是一个经典的图论问题,主要应用于通信网络、运输计划等领域,旨在寻找网络中从源节点到汇节点的最大流量。在这个问题中,每个节点代表一个“点”,每条边代表可以传输流量的“通道”,并且每条边都有...
use serde::{Deserialize, Serialize}; #[derive(Serialize, Deserialize, Debug)] struct Point { x: i32, y: i32, } fn main() { let point = Point { x: 1, y: 2 }; // Convert the Point to a JSON ...
Cannot deserialize instance of multipicklist from START_ARRAY value 和 JSON_PARSER_ERROR 这看起来是由于 Salesforce 使用 JSON 对象处理数组元素的方式。 #####Example 如果您希望创建一个带有自定义字段...
`JSON_OBJECT`和`JSON_ARRAY`用于创建JSON对象和数组。`JSON_OBJECT`可以接受键值对,而`JSON_ARRAY`则用于构建JSON数组。例如: ```sql DECLARE json_obj JSON_OBJECT_T; json_arr JSON_ARRAY_T; BEGIN json_...
- **反序列化**:将 JSON 字符串还原为 .NET 对象,`JsonConvert.DeserializeObject()` 可以创建指定类型的实例,根据 JSON 数据填充对象属性。 2. **JsonSerializerSettings** - 在序列化和反序列化过程中,可以...
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于Web服务和应用程序之间的数据传输。它易于人阅读和编写,同时也易于机器解析和生成。在C#和JSON-c(C语言的JSON库)中,处理JSON数据是...
标题中的"NewtonJson_NewtonJson_JSON_json解析_presentd78_"可能指的是使用Newtonsoft.Json库进行JSON解析的演示或教程。 在.NET环境中,Newtonsoft.Json.dll是该库的主要组件,它包含了一系列类和方法,使得...
`serde_json::Value`提供了丰富的API来访问和修改JSON数据,如`as_*()`方法用于转换类型,`get()`和`as_object()`用于访问对象字段,`as_array()`和`get_index()`用于处理数组。 7. **优化性能**: `serde_json`...
在.NET开发环境中,C#语言提供了多种方式来处理JSON数据,其中Newtonsoft.Json库是最常用的一个。本教程将深入探讨如何使用Newtonsoft.Json库在C#中解析包含数组的JSON对象,这对于处理从Web API、数据库或其他服务...
Dim person As Person = JsonConvert.DeserializeObject(Of Person)(jsonString) ``` 4. 访问数据:读取后,你可以直接访问VB对象的属性来获取JSON数据。 ```vb Console.WriteLine("Name: " & person.Name) ...
reqwest-debug-json 提供inspect_json为reqwest的响应对象的方法。 该方法替代了标准的json方法。 可用于响应json跟踪目的。 ErrorType必须同时实现From<reqwest> + From<serde> .inspect_json::(move |text| { ...
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在.NET平台上,JSON常用于Web开发中的数据传输,因为它的结构清晰,与JavaScript对象语法相似,因此...
在处理非UTF-8编码的JSON字符串时,可能需要捕获`UnicodeDecodeError`和`UnicodeEncodeError`异常。 通过这些方法,开发者可以方便地在Python应用中使用JSON进行数据交换和存储。了解并熟练掌握这些知识点,对于...
在本项目 "Json_Deserialize" 中,我们将专注于使用 Json.NET 进行 JSON 反序列化的实践应用。 首先,JSON 是一种轻量级的数据交换格式,广泛应用于 Web 服务和客户端之间的数据传输,因为它的语法简洁且易于人类...
注意,由于JSON库的异常处理机制,你需要确保在处理文件时捕获可能出现的异常,防止程序崩溃。 以上就是UE4中读取和修改JSON文件的基本步骤。这个项目示例可能包含了更具体的实现细节,例如错误处理、多层嵌套的...
在.NET开发环境中,C#是一种常用的编程语言,而JSON(JavaScript Object Notation)则是一种轻量级的数据交换格式,广泛应用于Web服务和客户端之间的数据传输。这个"C# Json文件读写修改类附带操作程序.zip"文件提供...
1. **Json.NET库**:最常用的工具是Newtonsoft.Json,也被称为Json.NET,它提供了一个`JsonConvert.DeserializeObject(string json)`方法,可以将JSON字符串转换为指定类型的对象。例如: ```csharp using ...
在C#编程中,处理JSON数据是常见的任务,特别是在与Web服务交互或处理API响应时。JSON(JavaScript Object ...记住,始终确保正确处理可能出现的异常,例如JSON解析错误或字段不存在的情况,以确保程序的健壮性。