• 一个可以随时插入的json的简单实现


    package net.totosea.domain;
    
    import java.util.Collection;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;
    import java.util.Set;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    /**
     * 用Map来实现Json
     * 
     * @author huang
     * 
     */
    public class ResultJsonRange implements Map<String, String> {
    
    	Map<String, String> map = new HashMap<String, String>();
    
    	public Map<String, String> getMap() {
    		return map;
    	}
    
    	public void setMap(Map<String, String> map) {
    		this.map = map;
    		this.stringBuffer = createStringBuffer(this.map);
    	}
    
    	private StringBuffer stringBuffer;
    
    	public StringBuffer getStringBuffer() {
    		return stringBuffer;
    	}
    
    	public void setStringBuffer(StringBuffer stringBuffer) {
    		this.stringBuffer = stringBuffer;
    		String str = this.stringBuffer.toString();
    		Map<String, String> data = new HashMap<String, String>();
    		String reg = "\".+?\":\".*?\"";
    		Pattern p = Pattern.compile("^[{].*?[}]$");
    		Matcher m = p.matcher(str);
    		Pattern pattern = Pattern.compile(reg);
    		Matcher matcher = pattern.matcher(str);
    		if (m.find()) {
    			while (matcher.find()) {
    				String s = matcher.group();
    				if (s.contains(":")) {
    					String key = s.split(":")[0];
    					String value = s.split(":")[1];
    					data.put(key, value);
    				}
    			}
    		}
    		this.map = data;
    	}
    
    	@Override
    	public void clear() {
    		this.stringBuffer = null;
    		this.map = null;
    	}
    
    	@Override
    	public boolean containsKey(Object key) {
    		if (map.containsKey(key)) {
    			return true;
    		} else {
    			return false;
    		}
    	}
    
    	@Override
    	public boolean containsValue(Object value) {
    		if (map.containsValue(value)) {
    			return true;
    		} else {
    			return false;
    		}
    	}
    
    	@Override
    	public Set<java.util.Map.Entry<String, String>> entrySet() {
    		return map.entrySet();
    	}
    
    	@Override
    	public String get(Object key) {
    		return map.get(key);
    	}
    
    	@Override
    	public boolean isEmpty() {
    		if (map.size() > 0) {
    			return false;
    		} else {
    			return true;
    		}
    	}
    
    	@Override
    	public Set<String> keySet() {
    		return this.map.keySet();
    	}
    
    	@Override
    	public String put(String key, String value) {
    		if (key == null || key == "") {
    			throw new NullPointerException("key为空!");
    		} else {
    			this.map.put(key, value);
    			this.stringBuffer = createStringBuffer(this.map);
    		}
    		return key;
    	}
    
    	private StringBuffer createStringBuffer(Map<String, String> map) {
    		StringBuffer sb = new StringBuffer();
    		sb.append("{");
    		Set<String> keyset = this.map.keySet();
    		for (Iterator it = (Iterator) keyset.iterator(); it.hasNext();) {
    			String key = (String) it.next();
    			sb.append("\"" + key + "\"");
    			sb.append(":");
    			sb.append("\"" + this.map.get(key) + "\"");
    			sb.append(",");
    		}
    		sb.replace(0, sb.length(), sb.toString().substring(0,
    				sb.toString().length() - 1));
    		sb.append("}");
    		return sb;
    	}
    
    	@Override
    	public void putAll(Map<? extends String, ? extends String> m) {
    		// TODO Auto-generated method stub
    	}
    
    	@Override
    	public String remove(Object key) {
    		if (containsKey(key)) {
    			String value = map.get(key);
    			map.remove(key);
    			this.stringBuffer = createStringBuffer(this.map);
    			return value;
    		} else {
    			return null;
    		}
    
    	}
    
    	@Override
    	public int size() {
    		return this.map.size();
    	}
    
    	@Override
    	public Collection<String> values() {
    		return this.map.values();
    	}
    
    }
    

     测试代码:

    	public static void main(String[] s) {
    		ResultJsonRange r = new ResultJsonRange();
    		r.put("flag", "true");
    		r.put("context", "sss");
    		StringBuffer sb = r.getStringBuffer();
    		System.out.print(sb.toString());
    		System.out.println("0000000");
    		System.out.println("0000000");
    	}
    

     测试结果:

    {"flag":"true","context":"sss"}0000000
    0000000
    

     这种实现目前只支持简单的单层json格式,对map的简单转换

  • 相关阅读:
    windows10环境运用SSH和SwitchySharp自由翱翔
    Windows10 Virtualization Technology虚拟化技术功能
    [转]docker 基本原理及快速入门
    通俗易懂介绍机器学习与深度学习的差别
    对于python setup.py install安装的包如何卸载
    在Ubuntu上安装boost库[转]
    word2vec相关资源
    ubuntu16.04 LTS Server 安装mysql phpmyadmin apache2 php5.6环境
    tmux配置与用法整理
    Oracle学习笔记:LOB大数据字段类型
  • 原文地址:https://www.cnblogs.com/tatame/p/2425737.html
Copyright © 2020-2023  润新知