我有麻烦让JSON工作.ObjectMapper无法解决.库已正确导入.
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.json.JSONException;
import net.sf.json.util.*;
import com.fasterxml.jackson.*;
public class Json {
private static final String jsonFilePath = "C:\\Users\\Juergen\\Desktop\\filesForExamples\\mapExample.json";
public static void objectToJSON(HashMap<String, Mat> map) {
//Map<String, Object> mapObject = new HashMap<String, Object>();
ObjectMapper mapper = new ObjectMapper();
try {
objectMapper.writeValue(new File(jsonFilePath), map);
} catch (IOException e) {
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud) 有没有办法使用内置的Jackson功能,使用java将json对象列表转换为HashMap
说明:我需要解析的Json结构
{
list:[
{
keyId : 1,
keyLabel : "Test 1",
valueId: 34,
valueLabel: "Test Lable"
},
{
keyId : 2,
keyLabel : "Test 2",
valueId: 35,
valueLabel: "Test Lable"
},
{
keyId : 3,
keyLabel : "Test 3",
valueId: 36,
valueLabel: "Test Lable"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我期待的对象模型,
class Key{
int keyId;
String keyLable;
hashCode(){
return keyId.hashCode();
}
}
class Value{
int valueId;
String valueLable;
hashCode(){
return valueId.hashCode();
}
}
Run Code Online (Sandbox Code Playgroud)
我需要将上面的json列表转换为这样的地图,
HashMap<Key,Value> map;
Run Code Online (Sandbox Code Playgroud) 当使用以下JSON并且"phones"或"emailAddresses"为空时,我收到NullPointerException.
JSON:
{
"item": {
"messages": {
"user.phone.missing": {
"type": "warning",
"key": "user.phone.missing",
"message": "User profile does not have a phone number",
"code": null
},
"user.email.missing": {
"type": "warning",
"key": "user.email.missing",
"message": "User profile does not have an email address",
"code": null
},
"user.es.sync.failed": {
"type": "error",
"key": "user.es.sync.failed",
"message": "Unable to sync user",
"code": null
}
},
"user": {
"firstName": "Test",
"middleInitial": null,
"lastName": "User",
"createdDt": "2016-04-20 19:50:03+0000",
"updatedDt": null,
"lastVerifiedDt": null,
"status": "DEACTIVATED",
"tokens": [
{
"tokenHash": "test …Run Code Online (Sandbox Code Playgroud) 我在 iOS 应用程序中使用 Moya 和 RxSwift 进行网络连接,我希望能够在我的Observers 调用onError.
API 始终以以下 JSON 格式返回错误响应:
{
"error": {
"message": "Error message goes here",
"code": "String error code"
}
}
Run Code Online (Sandbox Code Playgroud)
目标是实现类似于以下代码片段的内容,其中传入的错误onError是我的自定义错误类型而不是Moya.Error类型:
observable
.subscribe(
onNext: { response in
// Do typical onNext stuff
},
onError: { error in
// Get and consume my custom error type here:
let customError = error as! MyCustomErrorModel
print("My API's error message: \(customError.error?.message)")
print("My API's error code: \(customError.error?.code)")
})
Run Code Online (Sandbox Code Playgroud)
我能够使用自定义PluginType(粘贴在下面,来自 …
这是从服务器返回的json字符串.我试图将其映射到对象映射器类并打印值但我得到以下错误.
错误域= NSCocoaErrorDomain代码= 3840"字符1周围的对象中的值没有字符串键."
{'Status': False, 'updatedStatus': True, 'connectionStatus': True}
Run Code Online (Sandbox Code Playgroud)
以下是我的mapper类
public class Info: Mappable {
internal let kStatusKey: String = "Status"
internal let kConnectionStatusKey: String = "connectionStatus"
internal let kupdatedStatusKey: String = "updatedStatus"
// MARK: Properties
public var Status: String?
public var connectionStatus: String?
public var updatedStatus: String?
// MARK: ObjectMapper Initalizers
/**
Map a JSON object to this class using ObjectMapper
- parameter map: A mapping from ObjectMapper
*/
required public init?(_ map: Map){
}
/**
Map a …Run Code Online (Sandbox Code Playgroud) 让我从问题的背景开始.
我有一个Person用于解析JSON响应的类
class Person: NSObject, Mappable {
var ID : String?
var firstName : String?
var lastName : String?
convenience required init?(map: Map) {
self.init()
}
func mapping(map: Map) {
patientsCount <- map["patientsCount"]
status <- map["status"]
message <- map["Message"]
patientSearchArray <- map["patientsList_JSON"]
}
}
Run Code Online (Sandbox Code Playgroud)
而在另一方面,我有另一个PersonMO用于保存记录的类名CoreData
@objc(Event)
class PersonMO: NSManagedObject {
@NSManaged var ID : String?
@NSManaged var firstName : String?
@NSManaged var lastName : String?
}
Run Code Online (Sandbox Code Playgroud)
现在谈到要点.我面临的问题是我必须为一个目的创建两个不同的类.就像当JSON谈到形式Server Side那么我必须把它解析为Person …
Assuem我有以下类:
public class Employee {
private Department department;
// other fields, getters and setters omited for brevtity
}
public class Department {
private Address address;
// other fields, getters and setters omited for brevtity
}
public class Address {
private Location location;
// other fields, getters and setters omited for brevtity
}
public class Location {
private String streetName;
// other fields, getters and setters omited for brevtity
}
Run Code Online (Sandbox Code Playgroud)
现在,我想加载Employee对象并序列化它ObjectMapper:
public void serializeEmployee() {
Employee employee …Run Code Online (Sandbox Code Playgroud) 如何阅读下面JSON使用Jackson ObjectMapper?我已经开发了代码,但出现以下错误。
com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList` out of START_OBJECT token
at [Source: (File); line: 7, column: 19] (through reference chain: com.example.demo.resources.Orgnization["secondaryIds"])
Run Code Online (Sandbox Code Playgroud)
JSON
{
"id": "100000",
"name": "ABC",
"keyAccount": false,
"phone": "1111111",
"phoneExtn": "11",
"secondaryIds": {
"ROP": [
"700010015",
"454546767",
"747485968",
"343434343"
],
"AHID": [
"01122006",
"03112001"
]
}
}
Run Code Online (Sandbox Code Playgroud) 我想基于端点配置自定义消息转换器。例如,我在Spring启动控制器中有以下两个端点:
@RequestMapping(value = "/all", method = RequestMethod.GET)
public ResponseEntity<Object> findAll{@PageableDefault(size = 10, page = 0) final Pageable pageable){
//code
}
@RequestMapping(value = "/object/{id}", method = RequestMethod.GET)
public ResponseEntity<Object> byId{@RequestParam("id" String id){
//code
}
Run Code Online (Sandbox Code Playgroud)
对于这两种情况,我想使用不同的HttpMessageConverter(以及对象映射器)实例。例如,我想CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES为/all端点设置策略,因为它是页面响应,而不是/object。
该应用程序已经configureMessageConverters覆盖了方法,所有Objects都使用了Objectmapper bean。如果对此做出任何更改,它将适用于所有端点,这是我不希望的。
还有其他方法吗?(有点像在findAll方法本身中创建和使用自定义消息转换器)
自从Apache发布了Johnzon的第一个最终版本以来,看看Johnzon和FastXML Jackson之间是否已经有一些比较,看看是否值得进行转换,将是非常有趣的。最重要的主题可能是性能。
有没有人做过性能测试?您可以分享您的结果吗?
最好
objectmapper ×10
jackson ×6
java ×6
json ×6
ios ×3
swift ×3
apache ×1
core-data ×1
moya ×1
rx-swift ×1
spring-boot ×1
spring-mvc ×1