2013-11-15 63 views
0

上面的情况是,我有一个字符串列表和一个JSON。我想检查JSON是否包含列表中存在的所有键。如果列表中不存在任何关键字,那么我想从JSON中删除该特定关键字:值对。我怎样才能做到这一点?如何检查JSON是否有字符串列表中的键

可以说我有一个列表['name','password'],并 JSON作为{"name":"veeru","pass":"123","age":"23"}, 现在因为年龄并不在列表中存在我想删除从我的JSON本身条目。我怎样才能做到这一点?

+0

什么你曾尝试:

这可以使用jackson和下面的代码来完成? –

+0

参考[this](http://stackoverflow.com/a/12510289/1283215) –

+0

解析json使用一些JSON解析器,获取键值与列表进行比较,并构建一个新的json与在名单 –

回答

1

我只是做一个新的对象。

var obj = {"name":"veeru","pass":"123","age":"23"}; 

var strippedObj = {}; 
['name', 'password'].forEach(function(key) { 
    if(key in obj) { 
     strippedObj[key] = obj[key]; 
    } else { 
     throw 'key ' + key + ' not found'; 
    } 
}); 

console.log(strippedObject); //{name:'verru', pass:'123'} 
0

由于问题标记为java,因此您可能需要将json数据转换为java域对象。

public class JsonSample 
{ 
    static class User 
    { 
     String name; 
     char[] pass; 

     public String getName() 
     { 
      return name; 
     } 

     public void setName(String name) 
     { 
      this.name = name; 
     } 

     public char[] getPass() 
     { 
      return pass; 
     } 

     public void setPass(char[] pass) 
     { 
      this.pass = pass; 
     } 
    } 

    public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException 
    { 
     String json = "{\"name\":\"veeru\",\"pass\":\"123\",\"age\":\"23\"}"; 

     ObjectMapper mapper = new ObjectMapper(); 
     mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); 

     User user = mapper.readValue(json, User.class); 

     System.out.println(user.name); 
     System.out.println(new String(user.pass)); 

     mapper.writeValue(System.out, user); 
    } 
} 
相关问题