`
seaboycs
  • 浏览: 127961 次
  • 性别: Icon_minigender_1
  • 来自: 南通
社区版块
存档分类
最新评论

Json 异常:Can not deserialize instance of xx out of START_ARRAY token

阅读更多

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_JSON2_/UI2/CL_JSON_ui2/cl_json_abap_Ui2_cl_json_zui2_json_源"可能指的是一个与ZUI2相关的项目,它利用了ABAP类/UI2/CL_JSON来解析和生成JSON数据。描述中提到,我们需要用到这个类来将JSON格式的...

    deserialize-json-api::bowl_with_spoon:不可变的json

    :bowl_with_spoon: deserialize-json-api 不可变的json:api反序列化器 符合 将包含的对象映射到资源 不改变原始响应对象 安装 yarn add deserialize-json-api 用法 import { deserialize } from "deserialize-json...

    网络最大流,较为简单的一个程序

    网络最大流问题是一个经典的图论问题,主要应用于通信网络、运输计划等领域,旨在寻找网络中从源节点到汇节点的最大流量。在这个问题中,每个节点代表一个“点”,每条边代表可以传输流量的“通道”,并且每条边都有...

    Serde 是一个 高效和通用的序列化和反序列化Rust数据结构的框架

    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 ...

    sfdc-json:使用任何 REST API 修复 Salesforce Multi-select Picklist 以进行 JSON 插入并缓解 JSON_PARSER_ERROR

    Cannot deserialize instance of multipicklist from START_ARRAY value 和 JSON_PARSER_ERROR 这看起来是由于 Salesforce 使用 JSON 对象处理数组元素的方式。 #####Example 如果您希望创建一个带有自定义字段...

    Oracle Json常用方法封装

    `JSON_OBJECT`和`JSON_ARRAY`用于创建JSON对象和数组。`JSON_OBJECT`可以接受键值对,而`JSON_ARRAY`则用于构建JSON数组。例如: ```sql DECLARE json_obj JSON_OBJECT_T; json_arr JSON_ARRAY_T; BEGIN json_...

    Newtonsoft.Json-master_Newtonsoft.Json_源码

    - **反序列化**:将 JSON 字符串还原为 .NET 对象,`JsonConvert.DeserializeObject()` 可以创建指定类型的实例,根据 JSON 数据填充对象属性。 2. **JsonSerializerSettings** - 在序列化和反序列化过程中,可以...

    json.zip_JSON_json c#_json-c

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于Web服务和应用程序之间的数据传输。它易于人阅读和编写,同时也易于机器解析和生成。在C#和JSON-c(C语言的JSON库)中,处理JSON数据是...

    NewtonJson_NewtonJson_JSON_json解析_presentd78_

    标题中的"NewtonJson_NewtonJson_JSON_json解析_presentd78_"可能指的是使用Newtonsoft.Json库进行JSON解析的演示或教程。 在.NET环境中,Newtonsoft.Json.dll是该库的主要组件,它包含了一系列类和方法,使得...

    json:用于Rust的强类型JSON库

    `serde_json::Value`提供了丰富的API来访问和修改JSON数据,如`as_*()`方法用于转换类型,`get()`和`as_object()`用于访问对象字段,`as_array()`和`get_index()`用于处理数组。 7. **优化性能**: `serde_json`...

    c#利用Newtonsoft.Json解析json(带数组)

    在.NET开发环境中,C#语言提供了多种方式来处理JSON数据,其中Newtonsoft.Json库是最常用的一个。本教程将深入探讨如何使用Newtonsoft.Json库在C#中解析包含数组的JSON对象,这对于处理从Web API、数据库或其他服务...

    VB利用官方api读写JSON数据格式文件简单实例

    Dim person As Person = JsonConvert.DeserializeObject(Of Person)(jsonString) ``` 4. 访问数据:读取后,你可以直接访问VB对象的属性来获取JSON数据。 ```vb Console.WriteLine("Name: " & person.Name) ...

    reqwest_inspect_json

    reqwest-debug-json 提供inspect_json为reqwest的响应对象的方法。 该方法替代了标准的json方法。 可用于响应json跟踪目的。 ErrorType必须同时实现From&lt;reqwest&gt; + From&lt;serde&gt; .inspect_json::(move |text| { ...

    json代码示例

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在.NET平台上,JSON常用于Web开发中的数据传输,因为它的结构清晰,与JavaScript对象语法相似,因此...

    json常用包

    在处理非UTF-8编码的JSON字符串时,可能需要捕获`UnicodeDecodeError`和`UnicodeEncodeError`异常。 通过这些方法,开发者可以方便地在Python应用中使用JSON进行数据交换和存储。了解并熟练掌握这些知识点,对于...

    Json_Deserialize:使用 Json.NET 显示 Json 反序列化的示例应用程序

    在本项目 "Json_Deserialize" 中,我们将专注于使用 Json.NET 进行 JSON 反序列化的实践应用。 首先,JSON 是一种轻量级的数据交换格式,广泛应用于 Web 服务和客户端之间的数据传输,因为它的语法简洁且易于人类...

    ue4 json文件的读取和修改 项目示例

    注意,由于JSON库的异常处理机制,你需要确保在处理文件时捕获可能出现的异常,防止程序崩溃。 以上就是UE4中读取和修改JSON文件的基本步骤。这个项目示例可能包含了更具体的实现细节,例如错误处理、多层嵌套的...

    C#Json文件读写修改类附带操作程序.zip

    在.NET开发环境中,C#是一种常用的编程语言,而JSON(JavaScript Object Notation)则是一种轻量级的数据交换格式,广泛应用于Web服务和客户端之间的数据传输。这个"C# Json文件读写修改类附带操作程序.zip"文件提供...

    C#对象与json转换

    1. **Json.NET库**:最常用的工具是Newtonsoft.Json,也被称为Json.NET,它提供了一个`JsonConvert.DeserializeObject(string json)`方法,可以将JSON字符串转换为指定类型的对象。例如: ```csharp using ...

    C# 获取json字段中指定值

    在C#编程中,处理JSON数据是常见的任务,特别是在与Web服务交互或处理API响应时。JSON(JavaScript Object ...记住,始终确保正确处理可能出现的异常,例如JSON解析错误或字段不存在的情况,以确保程序的健壮性。

Global site tag (gtag.js) - Google Analytics