- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我遇到了一个奇怪的问题,我是 Android 和 Json 的新手。我正在使用一个显示 json 响应的 RESTful WCF,如下所示:
{"StatusCode":200,"Message":"","Result":{"Agencies":[],"Areas":[{"id":11,"area_name":"area 10","description":"updated 10","active":true},{"id":12,"area_name":"Area 11","description":"temp 11","active":true},{"id":13,"area_name":"Area 12","description":"temp12","active":true},{"id":14,"area_name":"area 13","description":"temp 13 3","active":true},{"id":7,"area_name":"Area 6","description":"temp6","active":true},{"id":8,"area_name":"area 7","description":"temp7","active":true},{"id":9,"area_name":"area 8","description":"temp 8","active":true},{"id":10,"area_name":"area 9","description":"temp 9","active":true},{"id":1,"area_name":"area1","description":"temp","active":true},{"id":3,"area_name":"area2","description":"temp2","active":true},{"id":4,"area_name":"area3","description":"asdddasdsa","active":true},{"id":5,"area_name":"area4","description":"dasdassad","active":true},{"id":6,"area_name":"area5","description":"temp5","active":true}],"Districts":[{"id":5,"district_name":"District 5","district_code":"1","description":"temp 5","area_id":8,"area_name":"area 7","active":true},{"id":4,"district_name":"district 4","district_code":"2","description":"temp 4","area_id":8,"area_name":"area 7","active":true},{"id":1,"district_name":"district 1","district_code":"1","description":"descrp","area_id":10,"area_name":"area 9","active":true},{"id":2,"district_name":"district 2","district_code":"1","description":"descrp","area_id":10,"area_name":"area 9","active":true},{"id":3,"district_name":"district 3","district_code":"1","description":"temp 3","area_id":5,"area_name":"area4","active":true}],"FacilityOccupacies":[{"id":1,"facility_name":"C","description":"Computer facility","active":true},{"id":2,"facility_name":"CA","description":"Adult correctional facility","active":true},{"id":3,"facility_name":"CJ","description":"Juvenile correctional facility","active":true},{"id":4,"facility_name":"GS","description":"Garage for operations support, including vehicle maintenance, repair or fuel depot","active":true},{"id":5,"facility_name":"GP","description":"Garage for parking","active":true},{"id":6,"facility_name":"I","description":"Light industrial facility","active":true},{"id":7,"facility_name":"L","description":"Library","active":true},{"id":8,"facility_name":"M","description":"Medical facilities such as clinics, infirmaries or hospitals","active":true},{"id":9,"facility_name":"N","description":"Non-categorized facility","active":true},{"id":10,"facility_name":"OM","description":"Office buildings where approximately 75% or more of occupants are senior level managers","active":true},{"id":11,"facility_name":"OS","description":"Office building","active":true},{"id":12,"facility_name":"SP","description":"Primary school","active":true},{"id":13,"facility_name":"SS","description":"Secondary school","active":true},{"id":14,"facility_name":"U","description":"University","active":true},{"id":15,"facility_name":"W","description":"Warehouse","active":true}],"FireSprinkler":[{"id":2,"fire_sprinkler":"N","description":"A lack of a fire sprinkler fire suppression system.","active":true},{"id":3,"fire_sprinkler":"P","description":"A partial fire sprinkler fire suppression system.","active":true},{"id":1,"fire_sprinkler":"Y","description":"A full fire sprinkler fire suppression system.","active":true}],"FoundSources":[{"id":1,"found_source_name":"COP","description":"Certificates of Participation","active":true},{"id":2,"found_source_name":"COSF","description":"Capital Outlay Stabilization Fund","active":true},{"id":6,"found_source_name":"Exempt","description":"Exempt From Rent","active":true},{"id":4,"found_source_name":"GF","description":"Capital Outlay Stabilization Fund","active":true},{"id":5,"found_source_name":"N/A","description":"Not Applicable","active":true},{"id":3,"found_source_name":"PLTO","description":"Private Lease-To-Own","active":true}],"Locations":[{"id":1,"location_name":"location 1","location_code":"1","description":"temp 1","district_id":3,"district_name":"district 3","active":true}],"MarshallSwift":[{"id":1,"class":"A","frame":"Structural steel columns and beams fire proofed with masonry, concrete, plaster, or other incombustible material.","floor":"Concrete or concrete covered steel deck, fire-proofed.","roof":"Concrete or concrete covered steel deck,fire-proofed.","walls":"Non-bearing curtain walls, masonry, concrete, metal, and glass panels, stone.","active":true},{"id":2,"class":"B","frame":"Reinforced concrete columns and beams.","floor":"Concrete or concrete covered steel deck, fire-proofed.","roof":"Concrete or concrete covered steel deck, fire-proofed.","walls":"Non-bearing curtain walls, masonry, concrete, metal, and glass panels, stone.","active":true},{"id":3,"class":"C","frame":"Structural steel columns and beams fire-proofed with masonry, concrete, plaster, or other incombustible material.","floor":"Concrete or concrete covered steel deck, fire-proofed.","roof":"Wood or steel joist, wood or steel deck.","walls":"Brick, concrete block, or tile masonry, tilt-up formed concrete.","active":true},{"id":4,"class":"D","frame":"Wood or steel studs in bearing wall, wood or steel skeleton frame.","floor":"Wood or steel floor joists or slabs on ground.","roof":"Wood or steel joist, wood or steel deck.","walls":"Almost any material except masonry or concrete. May have masonry veneer over steel or wood framing.","active":true},{"id":5,"class":"S","frame":"Steel – No fire protection.","floor":"Concrete","roof":"Steel – No fire protection.","walls":"Steel – No fire protection.","active":true}],"Profiles":[{"id":1,"profile_name":"Administrator","description":"System Administrator","active":true},{"id":2,"profile_name":"Inspector","description":"Building Inspector","active":true}],"ProjectCategories":[{"id":1,"category_name":"Fire/Life Safety","description":"Fire/Life Safety","active":true},{"id":2,"category_name":"HVAC","description":"HVAC","active":true},{"id":3,"category_name":"Infrastructure","description":"Infrastructure","active":true},{"id":4,"category_name":"Interior Renovation","description":"Interior Renovation","active":true},{"id":5,"category_name":"Shell","description":"Shell","active":true},{"id":6,"category_name":"Energy Consv","description":"Energy Consv","active":true},{"id":7,"category_name":"ADA Access","description":"ADA Access","active":true},{"id":8,"category_name":"Building Services","description":"Building Services","active":true},{"id":9,"category_name":"NONE","description":"NONE","active":true}],"Projects":[],"Structures":[]}}
我正在尝试使用 Jackson 1.9.11 将其反序列化为复杂对象。
所以我用
final ObjectMapper mapper = new ObjectMapper();
RawResult<RawCatalogs> oResult = mapper.readValue(strResponse, new TypeReference<RawResult<RawCatalogs>>() {});
其中 RawResult 是一个带有模板的类,而 RawCatalogs 是一个带有嵌套对象的类,它曾经正确地反序列化响应,但现在它在标题中显示错误。
类的定义是这样的(不知道是否需要嵌套类的信息来全面支持?我想我已经很好地映射了它们,只是为了清楚起见而发布重要信息)
import org.codehaus.jackson.annotate.JsonCreator;
import org.codehaus.jackson.annotate.JsonIgnore;
import org.codehaus.jackson.annotate.JsonProperty;
final public class RawResult<T> {
private final Integer _StatusCode;
private final Boolean _Status;
private final String _Message;
private final T _Result;
public RawResult(Class<T> oClass) throws InstantiationException, IllegalAccessException
{
_StatusCode = null;
_Message = null;
_Result = BuildGeneric(oClass);
_Status = false;
}
@JsonCreator
public RawResult(
@JsonProperty("StatusCode") Integer StatusCode,
@JsonProperty("Message") String Message,
@JsonProperty("Result") T Result)
{
_StatusCode = StatusCode;
_Message = Message;
_Result = Result;
_Status = StatusCode == 200;
}
private T BuildGeneric(Class<T> oClass) throws InstantiationException,
IllegalAccessException
{
return oClass.newInstance();
}
/**
* @return the _StatusCode
*/
@JsonProperty("StatusCode")
public Integer get_StatusCode() {
return _StatusCode;
}
/**
* @return the _Message
*/
@JsonProperty("Message")
public String get_Message() {
return _Message;
}
/**
* @return the _Result
*/
@JsonProperty("Result")
public T get_Result() {
return _Result;
}
/**
* @return the _Status
*/
@JsonIgnore
public Boolean get_Status() {
return _Status;
}
}
public interface ICatalog {
String _Id = null;
String _Description = null;
boolean _Active = false;
/**
* @return the _Id
*/
public String get_Id();
/**
* @return the _Description
*/
public String get_Description() ;
/**
* @return the _Active
*/
public boolean is_Active() ;
}
public abstract class RawCatalog implements ICatalog {
protected final String _Id;
protected final String _Description;
protected final String _Name;
protected final boolean _Active;
public RawCatalog(String Id, String Description,String Name, boolean Active)
{
_Id = Id;
_Description = Description;
_Name = Name;
_Active = Active;
}
@JsonProperty("id")
public String get_Id() {
// TODO Auto-generated method stub
return _Id;
}
@JsonProperty("description")
public String get_Description() {
// TODO Auto-generated method stub
return _Description;
}
@JsonProperty("name")
public String get_Name() {
// TODO Auto-generated method stub
return _Name;
}
@JsonProperty("active")
public boolean is_Active() {
// TODO Auto-generated method stub
return _Active;
}
}
public final class RawAgency extends RawCatalog {
private final String _AgencyCode;
private final String _LocationId;
private final String _LocationName;
private final int _NumberOfStructures;
@JsonCreator
public RawAgency(
@JsonProperty("id") String Id,
@JsonProperty("description") String Description,
@JsonProperty("agency_name") String Name,
@JsonProperty("active") Boolean Active,
@JsonProperty("agency_code") String AgencyCode,
@JsonProperty("get_LocationId") String LocationId,
@JsonProperty("get_LocationName") String LocationName,
@JsonProperty("get_NumberOfStructures") int NumberOfStructures
)
{
super(Id, Description, Name,Active);
_AgencyCode = AgencyCode;
_LocationId = LocationId;
_LocationName = LocationName;
_NumberOfStructures = NumberOfStructures;
}
/**
* @return the _AgencyName
*/
@JsonProperty("agency_name")
@Override
public String get_Name() {
return super.get_Name();
}
/**
* @return the _AgencyCode
*/
@JsonProperty("agency_code")
public String get_AgencyCode() {
return _AgencyCode;
}
/**
* @return the _LocationId
*/
@JsonProperty("location_id")
public String get_LocationId() {
return _LocationId;
}
/**
* @return the _NumberOfStructures
*/
@JsonProperty("number_of_structures")
public int get_NumberOfStructures() {
return _NumberOfStructures;
}
/**
* @return the _LocationName
*/
@JsonProperty("location_name")
public String get_LocationName() {
return _LocationName;
}
}
import java.util.List;
import org.codehaus.jackson.annotate.JsonCreator;
import org.codehaus.jackson.annotate.JsonProperty;
final public class RawCatalogs {
private final List<RawAgency> _Agencies;
private final List<RawArea> _Areas;
private final List<RawDistrict> _Districts;
private final List<RawFacilityOccupacy> _FacilityOccupacies;
private final List<RawFireSprinkler> _FireSprinklers;
private final List<RawFoundSources> _FoundSources;
private final List<RawLocation> _Locations;
private final List<RawMarshallSwift> _MarshallSwifts;
private final List<RawProfile> _Profiles;
private final List<RawProjectCategory> _ProjectCategories;
private final List<RawProject> _Projects;
private final List<RawStructure> _Structures;
@JsonCreator
public RawCatalogs(
@JsonProperty("Agencies") List<RawAgency> Agencies,
@JsonProperty("Areas") List<RawArea> Areas,
@JsonProperty("Districts") List<RawDistrict> Districts,
@JsonProperty("FacilityOccupacies") List<RawFacilityOccupacy> FacilityOccupacies,
@JsonProperty("FireSprinkler") List<RawFireSprinkler> FireSprinklers,
@JsonProperty("FoundSources") List<RawFoundSources> FoundSources,
@JsonProperty("Locations") List<RawLocation> Locations,
@JsonProperty("MarshallSwift") List<RawMarshallSwift> MarshallSwifts,
@JsonProperty("Profiles") List<RawProfile> Profiles,
@JsonProperty("ProjectCategories") List<RawProjectCategory> ProjectCategories,
@JsonProperty("Projects") List<RawProject> Projects,
@JsonProperty("Structures") List<RawStructure> Structures
)
{
_Agencies = Agencies;
_Areas = Areas;
_Districts = Districts;
_FacilityOccupacies = FacilityOccupacies;
_FireSprinklers = FireSprinklers;
_FoundSources = FoundSources;
_Locations = Locations;
_MarshallSwifts = MarshallSwifts;
_Profiles = Profiles;
_ProjectCategories = ProjectCategories;
_Projects = Projects;
_Structures = Structures;
}
/**
* @return the _Agencies
*/
@JsonProperty("Agencies")
public List<RawAgency> get_Agencies() {
return _Agencies;
}
/**
* @return the _Areas
*/
@JsonProperty("Areas")
public List<RawArea> get_Areas() {
return _Areas;
}
@JsonProperty("Districts")
/**
* @return the _Districts
*/
public List<RawDistrict> get_Districts() {
return _Districts;
}
/**
* @return the _FacilityOccupacies
*/
@JsonProperty("FacilityOccupacies")
public List<RawFacilityOccupacy> get_FacilityOccupacies() {
return _FacilityOccupacies;
}
/**
* @return the _FireSprinklers
*/
@JsonProperty("FireSprinkler")
public List<RawFireSprinkler> get_FireSprinklers() {
return _FireSprinklers;
}
/**
* @return the _FoundSources
*/
@JsonProperty("FoundSources")
public List<RawFoundSources> get_FoundSources() {
return _FoundSources;
}
/**
* @return the _Locations
*/
@JsonProperty("Locations")
public List<RawLocation> get_Locations() {
return _Locations;
}
/**
* @return the _MarshallSwifts
*/
@JsonProperty("MarshallSwift")
public List<RawMarshallSwift> get_MarshallSwifts() {
return _MarshallSwifts;
}
/**
* @return the _Profiles
*/
@JsonProperty("ProjectCategories")
public List<RawProfile> get_Profiles() {
return _Profiles;
}
/**
* @return the _ProjectCategories
*/
@JsonProperty("Profiles")
public List<RawProjectCategory> get_ProjectCategories() {
return _ProjectCategories;
}
/**
* @return the _Projects
*/
@JsonProperty("Projects")
public List<RawProject> get_Projects() {
return _Projects;
}
/**
* @return the _Structures
*/
@JsonProperty("Structures")
public List<RawStructure> get_Structures() {
return _Structures;
}
}
所以我的问题是为什么显示该错误?我在 stackoverflow 上搜索了类似的问题,所有问题似乎都与编码错误有关,但不是相同的代码错误,而且我无法控制 WCF。
实际上,如果我将 Json Respone 复制粘贴到 this page 中,它看起来格式正确。
我也尝试使用 mapper.configure,但 Jsonparser 的所有功能都不起作用
我做错了什么?
最佳答案
我在读取 JSON 文件时遇到了同样的错误。
您要么确保从 RESTful WCF 获得没有初始 0xfeff 的响应,要么在将其发送到 JSON 解析器之前将其剥离。也许 trim() 可以解决问题......
关于java - org.codehaus.jackson.JsonParseException : Unexpected character ('' (code 65279/0xfeff)): expected a valid value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16655349/
int i; System.out.print("Please enter a string: "); String string_1 = input.nextLine(); System.out
我想要一个正则表达式来检查 a password must be eight characters including one uppercase letter, one special charac
在此先感谢您的帮助。 在命令行输入“example”时,Python 返回“example”。我在网上找不到任何东西来解释这一点。所有引用资料都在 print 命令的上下文中谈到字符串,我得到了所有关
我有 CSV 格式的数据,这些数据在字符编码方面被严重打乱,可能在不同的软件应用程序(LibreOffice Calc、Microsoft、Excel、Google Refine、自定义 PHP/My
我正在为 Latex 使用 Sublime Text,所以我需要使用特定的编码。但是,在某些情况下,当我粘贴从不同程序(大多数情况下为单词/浏览器)复制的文本时,我收到以下消息: "Not all c
在 flutter 中,我使用了一个php文件,该文件从数据库查询返回json响应,但是当我尝试解码json时,出现此错误: E/flutter ( 8294): [ERROR:flutter/lib
我在 Flutter 项目中遇到异常。错误如下所示: Exception has occurred. FormatException (FormatException: Unexpected char
这个问题已经有答案了: Why doesn't my compare work between char and int in Java? (4 个回答) 已关闭 3 年前。 我试图在我的代码中找出
我在 Flutter 项目中遇到异常。错误如下所示: Exception has occurred. FormatException (FormatException: Unexpected char
我是 python 新手,需要一些帮助。我应该编写一个脚本,从键盘读取单词,直到输入单词 999。对于除 999 之外的每个单词,报告该单词是否有效。如果单词的第一个字符等于最后一个字符,则该单词有效
我正在实现自己的词法分析器,并且刚刚了解了 C# 如何处理字 rune 字:https://msdn.microsoft.com/en-us/library/aa691087(v=vs.71).asp
我有这个字符串: var test = "toto@test.com"; 我想用空值替换“@”字符后的所有字符。我想得到这个字符串: var test = "toto" 最佳答案 试试这个: test
我将数据库从 sqlite 更改为 postgresql 以用于我网站的生产,但出现此错误。当我在本地使用 sqlite 时,它没有出现这个错误。使用 Django。 ProgrammingErr
我正在为我的实验表制作凯撒密码,并使其能够加密 3 代入(凯撒密码),这是练习的重点。但是有一件事困扰着我。首先,如果我输入 3 以外的字符,则有一个尾随字符。例如,输入“恶意软件”,然后输入 2 作
遵循 this question 中的逻辑,以下代码应该有效: #include int main(){ printf("%c", '\0101'); return 0; } 然而,
我在处理一段代码时遇到错误: Too many characters in character literal error 使用 C# 和 switch 语句遍历字符串缓冲区并读取标记,但在这一行中出
给定一个元素,其值为: Distrib = SU & Prem <> 0 我要转<或 >进入 <或 >因为下游应用程序需要
从表面上看,他们似乎都在做同样的事情。但似乎是后者as(,"character")更强大。 作为示例,请考虑以下内容: library(rvest) temp % html_node("div p")
我刚开始使用python,所以很可能只是在做一些愚蠢的事情。我正在从表中读取数据,需要将它们放入txt文件的列中。我无法说服我的代码创建新行。 这是我的代码- file = open("test_m.
在尝试刷新我的项目的 Fortran 90 知识时,我在使用内部文件时遇到了一些奇怪的情况。考虑示例代码: ! ---- internal_file_confusion.f90 ---- progra
我是一名优秀的程序员,十分优秀!