Spring初始化 Map 和 解析Json value
<bean id= "expToLevelMap" class="org.springframework.beans.factory.config.MapFactoryBean" >
<property name ="sourceMap">
<map>
<entry key ="expToLevel">
<value>
<![CDATA[
[{id:0, "name":"江湖小虾","level":0,"exp":0},
{id:1, "name":"江湖小虾","level":1,"exp":6},
{id:2, "name":"江湖小虾","level":2,"exp":16},
{id:3, "name":"江湖小虾","level":3,"exp":40},
{id:4, "name":"江湖小虾","level":4,"exp":70},
{id:5, "name":"江湖小虾","level":5,"exp":110},
{id:6, "name":"江湖小虾","level":6,"exp":190},
{id:7, "name":"江湖小虾","level":7,"exp":310},
{id:8, "name":"江湖小虾","level":8,"exp":470},
{id:9, "name":"江湖小虾","level":9,"exp":670},
{id:10, "name":"江湖小虾","level":10,"exp":790}
]
]]>
</value>
</entry>
</map>
</property>
</bean >
@Service("expToLevelService" )
public class ExpToLevelServiceImpl {
@Resource
private Map<String , String> expToLevelMap;
private TreeMap<Long , ExpToLevelObj> expToLevelTreeMap;
@PostConstruct
public void init () {
expToLevelTreeMap = new TreeMap<Long , ExpToLevelObj>();
JSONArray array = JSONArray.parseArray (expToLevelMap. get("expToLevel" ));
for ( Object object : array) {
JSONObject jsonObj = (JSONObject) JSONObject.parse (object. toString());
ExpToLevelObj obj = new ExpToLevelObj(jsonObj .getIntValue( "id"), jsonObj.getIntValue ("exp") ,
jsonObj.getIntValue ("level") , jsonObj .getString( "name"));
expToLevelTreeMap.put (jsonObj. getLongValue("exp" ), obj);
}
}
public TreeMap<Long , ExpToLevelObj> getExpToLevelTreeMap (){
return expToLevelTreeMap ;
}
}
最后我们会组装好一个expToLevelTreeMap 提供出去。
所以整个过程类似读取配置文件,进行不同的配置。 ExpToLevelObj :
public class ExpToLevelObj {
public ExpToLevelObj(){
}
public ExpToLevelObj(int id, int exp, int level, String name){
super();
this.id = id;
this.exp = exp;
this.level = level;
this.name = name;
}
private int id;
private int exp;
private int level;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getExp() {
return exp;
}
public void setExp(int exp) {
this.exp = exp;
}
public int getLevel() {
return level;
}
public void setLevel(int level) {
this.level = level;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
外界使用:
下面的代码就可以查出25exp,处于多少等级了
TreeMap < Long, ExpToLevelObj > treeMap = expToLevelService . getExpToLevelTreeMap (); expToLevelObj = treeMap . lowerEntry( 25) .getValue () ; expToLevelObj . getLevel()
Spring初始化 Map 和 解析Json value的更多相关文章
- [转]解析json:与array,list,map,bean,xml相互转化
一.解析json之net.sf.json 下载地址 使用netsfjson需要导入的包 JSONObject JSONArray JavaBean与json字符串互转 List与json字符串互转 M ...
- Jquery遍历筛选数组的几种方法和遍历解析json对象|Map()方法详解
Jquery遍历筛选数组的几种方法和遍历解析json对象|Map()方法详解 一.Jquery遍历筛选数组 1.jquery grep()筛选遍历数组 $().ready( function(){ v ...
- 利用阿里巴巴封装的FastJSON来解析json并转换成map
利用阿里巴巴封装的FastJSON来解析json并转换成map package com.zkn.newlearn.json; import com.alibaba.fastjson.JSON; i ...
- Spring Boot返回json数据及完美使用FastJson解析Json数据
Spring Boot返回json数据 视频地址:http://www.iqiyi.com/w_19rubxzsr5.html 博文参考:https://blog.csdn.net/linxingl ...
- Android中解析JSON形式的数据
1.JSON(JavaScript Object Notation) 定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式, ...
- Swift: Alamofire -> http请求 & ObjectMapper -> 解析JSON
1 2 3 4 5 6 7 8 9 10 11 NSURL *URL = [NSURL URLWithString:@"http://example.com/resources/123.js ...
- Spring MVC之视图解析器
Spring MVC提供的视图解析器使用ViewResolver进行视图解析,实现浏览器中渲染模型.ViewResolver能够解析JSP.Velocity模板.FreeMarker模板和XSLT等多 ...
- Spring MVC 学习总结(九)——Spring MVC实现RESTful与JSON(Spring MVC为前端提供服务)
很多时候前端都需要调用后台服务实现交互功能,常见的数据交换格式多是JSON或XML,这里主要讲解Spring MVC为前端提供JSON格式的数据并实现与前台交互.RESTful则是一种软件架构风格.设 ...
- Swift: 用Alamofire做http请求,用ObjectMapper解析JSON
跟不上时代的人突然间走在了时代的前列,果然有别样的风景.首先鄙视一下AFNetworking.这个东西实在太难用了.不想封装都不行,要不写一大堆代码. NSURL *URL = [NSURL URLW ...
随机推荐
- tds 安装找不到已安装的DB2
应该是没有安装ksh的问题,yum install ksh
- 修改weblogic部署的应用名称
通过weblogic管理后台console进行发布本地项目的时候,它会默认以WEB-INF的上一级目录作为访问路径,如,假如你的项目WEB-INF目录的上一层是WebRoot,那么发布后,访问的路径默 ...
- J2EE面试题
J2EE面试题 J2EE相关基础知识 1.面向对象的特征有哪些方面 1. 抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只 ...
- [转] jQuery源码分析-如何做jQuery源码分析
jQuery源码分析系列(持续更新) jQuery的源码有些晦涩难懂,本文分享一些我看源码的方法,每一个模块我基本按照这样的顺序去学习. 当我读到难度的书或者源码时,会和<如何阅读一本书> ...
- 向MySql中插入中文时出现乱码
这个因为字符集编码问题.在连接字符串中加上CharSet=gbk
- linux内核启动笔记
一. 1.解压 tar xjf linux-2.6.22.6.tar.bz2 2.打补丁 patch -p1 < ../linux-2.6.22.6_jz2440.patch 3.配置 ...
- 0xC0000005: 读取位置 0x00000000 时发生访问冲突
遇见这种问题一般都是空指针,即:指针里没有赋值~ 如果你对null 进行操作就会产生空指针异常 Object obj = new Object(); 你要知道 obj是一个Object指针变量,指向O ...
- vs 折叠跟展开所有方法。
Ctrl + M + O: 折叠所有方法 Ctrl + M + M: 折叠或者展开当前方法 Ctrl + M + L: 展开所有方法
- IT人才最容易犯的17个错误--人生警言
转载 记得刚参加工作时(那是97年),中国的IT刚刚兴起,那时,作为一个IT人士是一件很光荣的事,而那时的我正在做电气和电子相关的工作.99年第一次跳槽,进入了IT行业做软件开发.至今,中国的IT已经 ...
- android avoiding-memory-leaks
android avoiding-memory-leaks Memory Leak是会有多个方面会引起的,比如Drawable, RemoteViews, Receiver, Cursor,Input ...