我有第三方jar(我无法改变)使用java.beans.Introspector,java.beans.BeanInfo和java.beans.PropertyDescriptor.
如何在我的Android应用程序中使用该jar?
它无法Introspector从第3方jar 加载类(使用):
WARN/dalvikvm(780): VFY: unable to resolve static method 6325: Ljava/beans/Introspector;.getBeanInfo (Ljava/lang/Class;)Ljava/beans/BeanInfo;
WARN/dalvikvm(780): VFY: unable to resolve exception class 962 (Ljava/beans/IntrospectionException;)
WARN/dalvikvm(780): Verifier rejected class Lorg/thirdpartyjar/SomeClass;
Run Code Online (Sandbox Code Playgroud) 转换a的最佳方法List<POJO> to a List<Map<K,V>>.
是什么?是否有自定义方法/ API?
K = POJO的字段名称,V是对应的值
public class POJO implements Serializable{
String name;
String age;
//getters and setters
}
Run Code Online (Sandbox Code Playgroud) 我正在开发一个项目,我需要从层次结构Map<String, Object>中映射,其中第二个参数应该是a String或Map<String, Object>.到目前为止,ModelMapper工作得很棒,但我遇到了特定转换的问题.鉴于以下内容,其中Model只是一个标记界面:
class Client implements Model {
String firstName;
String lastName;
List<Organization> organizations = new ArrayList<>();
}
Run Code Online (Sandbox Code Playgroud)
假设Organization实现了我的标记界面,Model但是任意结构,我希望能够将以下内容映射到Client:
Map source = new HashMap(){{
put("firstName", "John"),
put("lastName", "Smith"),
put("organizations", new HashMap(){{
put("0", new HashMap(){{
put("id", "1234");
}});
put("abc", new HashMap(){{
put("id", "5678");
}});
}});
}};
Run Code Online (Sandbox Code Playgroud)
总结:在推入组织属性时,我如何让ModelMapper删除映射键并仅使用值列表?如果做不到这一点,组织的财产就会变空.你可能认为我有充分的理由希望这样做,而且是一个糟糕的例子!
提前感谢您的意见!
编辑
我试图建立一个Converter将管理从转换Map到Collection<Model>无果.鉴于:
new Converter<Map, Collection<DataTransportObject>>() {
@Override
public Set convert(MappingContext<Map, Collection<DataTransportObject>> context) { …Run Code Online (Sandbox Code Playgroud) 我有一些资源处理方法,其中包含带有的数十个@QueryParam参数@Default,并按大致主题(分页/排序,过滤,身份验证)分组。这确实很麻烦,我想简化一下。好消息是这些参数按主题(分页,排序,过滤等)分组,因此我可以将整个参数集简化为4种方法。
我该如何实现?
通常,我想从这里得出:
@GET
public Response findAll(
@QueryParam("sort") @DefaultValue("name") List<String> sort,
@QueryParam("from") UUID fromId
) {
// Validate sort
// Validate fromId
}
Run Code Online (Sandbox Code Playgroud)
对此:
@GET
public Response findAll(@Context Pagination pagination) { // Inject pagination
// Yeah, small code! Yeah, modularity!
}
// Create the pagination somewhere else.
public Pagination createPagination(@Context UriInfo uriInfo) {
Optional<UUID> fromId = extractFromId(uriInfo); // retrieve "from" from uriInfo
List<String> sort = extractSort(uriInfo); // retrieve "sort" from uriInfo
Pagination pagination = new Pagination(); …Run Code Online (Sandbox Code Playgroud) 在我的数据库中,我有一个看起来像这样的文档
{
"_id" : ObjectId("5864ddd8e38112fd70b89893"),
"_class" : "com.apic.models.UserReg",
"name" : "Bijay",
"email" : "apic.apps@gmail.com",
"psd" : "16d932a5a3da90cc6afd831016b5a6821f0badf7e2c624159205924433613c3a",
"activationToken" : "fe8376ea2dbdf61ebc0f11a2361d741ba3178362d5bf876cf47e6a126bc5b39c",
"verified" : false
}
Run Code Online (Sandbox Code Playgroud)
我也有一个看起来像这样的豆子
public class User {
@Id
private int id;
private String name;
private String email;
// getter/setter methods
}
Run Code Online (Sandbox Code Playgroud)
因此,当我尝试调用save()方法时MongoOperations,它会替换所有缺少的属性,如psd,verified和activationToken.
mongoOperations.save(user, COLLECTION);
Run Code Online (Sandbox Code Playgroud)
有什么方法可以更新我的模型类中的现有属性并保留其他属性吗?
我有以下内容:
public class ChargeRequest {
@Expose
private String customerName;
@Expose
private String stripeToken;
@Expose
private String plan;
@Expose
private String[] products;
gettersAndSetters()...
public Map<String, Object> toMap() {
return gson.fromJson(this, new TypeToken<Map<String, Object>>() {
}.getType());
}
public String toString() {
return gson.toJson(this, getClass());
}
}
Run Code Online (Sandbox Code Playgroud)
我正试图转换ChargeRequest成一个Map<String, Object>与Gson.
我的适配器:
public static class JsonAdapter implements JsonDeserializer<ChargeRequest>{
@Override
public ChargeRequest deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
ChargeRequest cr = new ChargeRequest();
JsonObject o = json.getAsJsonObject();
o.add("customerName", o.get("customerName")); …Run Code Online (Sandbox Code Playgroud) 我已经制作了一些自定义bean来实现Map接口,以便轻松访问JSP中的任意数据.
例:
${person["cellPhoneNumber"]}
Run Code Online (Sandbox Code Playgroud)
这些额外的数据可能会或可能不会添加到后端,因此Map似乎是一种很好的灵活方式来存储它.
当我尝试在我的bean上使用getter时会出现问题.我的Person类有一个getName()方法.在我的JSP中使用以下内容时,将Map.get()调用该方法而不是my方法.
${person.name}
Run Code Online (Sandbox Code Playgroud)
有没有办法绕过这个调用Map get("name")并调用getName()呢?
这是我的基本(剥离)Java类:
class Person implements Map
{
private HashMap<String, Object> myMap;
private String name;
public Object get(Object key)
{
return myMap.get(key);
}
public String getName()
{
return this.name;
}
}
Run Code Online (Sandbox Code Playgroud)
使用JSTL 1.1
java ×6
android ×1
gson ×1
jax-rs ×1
json ×1
jsp ×1
map ×1
modelmapper ×1
mongodb ×1
pojo ×1
reflection ×1
spring-data ×1