一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 903|回复: 5
收起左侧

[系统设计/OOD] 【诚心求教】parseJSON from Pocket Gems

[复制链接] |试试Instant~ |关注本帖
desperate500 发表于 2016-2-28 11:03:10 | 显示全部楼层 |阅读模式

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x
Pocket Gems的onsite有这样一道题
需要把给定的json class内容parse之后放入一个给定的Row class
题目要求是通过地里面经得来(感谢提供面经的盆友)
所以会有缺漏
请尽情YY......

上题目:
json格式
[
{type:"session", data:{player_id:89757, session_id:66055, name:"ergou", date:"2016-1-1HHMMSS"}},
{type:"purchase", data:{player_id:89757, session_id:66055, state:"success", date:"2016-1-2HHMMSS"}},
{type:"battle", data:{player_id:...., session_id:...., result:....}},
.....
]
整个json数组叫做events 其中的每一条记录叫做event

parse后需要存成以下class的实例
class Row {
      String tableName;
      Map<String, String> map;
}
tableName就是type的值,map就是data里面的key value pairs。

以下class是给定的(感觉此处有缺漏),是已经把json string处理完成得到的实例,所有json中的数据通过此实例得到
(个人感觉这些方法的参数是String key,比如我想让tableName = "session",我需要调用getAsString("tableName") 毕竟不止一个数据是string类型 所以需要输入key来加以判断)
class JSONValue {
       String getAsString()
       Long getAsLong()
       Map getAsMap()
       List getAsList()
       ....
}

需要实现的method接口是
List<Row> parseToDB(List<JSONValue> events, Config c) {}

这里Config类也是需要设计,用处在于,得到json中每个key对应的数据类型,从而调用JSONValue中的特定方法,来得到特定类型的值。
举个例子:player_id是89757,是个int,所以在存入Row里面的map时,就要调用JSONValue中的getInt()方法,然后也许再用个Integer.toString(int i)得到string类型,之后存入map。此时如果调用JSONValue中的其他方法,则无法得到正确结果。

我目前的思路是,把Config类当成一个字典。json中,每个key对应的数据类型,直接在config中存入。parse的时候,直接传入key,就能得到相应的类型。
例子:config里面有个set<String> stringSet 专门存放结果为String的key。就上例来说,stringSet中有个值是"name",因为name的数据类型是String。在我查找的时候,会有一个public String check(String s)的方法,在config中的不同set中查找s,if(this.stringSet.contains(s)) return "string"; 然后在我的接收端,if(c.check(key).equals("string")) {row.map.put(......)}。
不过感觉完全跟OOD扯不上边了。。。甚是郁闷


下周要onsite了 必考题没弄好比较捉鸡
遂po帖请教
烦请走过路过不要错过
一点点小思路 都万分感激!

beer 发表于 2016-2-28 23:24:09 | 显示全部楼层
https://github.com/ralfstx/minimal-json
这是别人写的一个简易JSON parser,感觉和题目这个差不多。可以读一下他的代码,都有comments的。
不同的是,题目中要求放在map中,代码里是放在一个JsonArray里。但是parse JSON的思路都一样的。

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

LBS 发表于 2016-2-29 01:46:06 | 显示全部楼层
顶一下!感谢楼上分享
回复 支持 反对

使用道具 举报

LBS 发表于 2016-2-29 05:04:34 | 显示全部楼层
beer 发表于 2016-2-28 23:24
https://github.com/ralfstx/minimal-json
这是别人写的一个简易JSON parser,感觉和题目这个差不多。可以 ...

多谢分享。但感觉这题难点主要在于如何设计CONFIG这个CLASS,让CONFIG能够帮我们自动决定如何选用合适的JSON PARSE的FUNCTION。
回复 支持 反对

使用道具 举报

billyli8866 发表于 2016-3-26 12:34:38 | 显示全部楼层
Parse Json那道题需要自己写parse部分的代码吗,还是直接用JSONValue 就行了?
回复 支持 反对

使用道具 举报

Rain 发表于 2016-4-27 05:51:48 | 显示全部楼层
想问下楼主 面完之后你感觉JSON这题面试官想要的考点在哪?你的Config的处理方法你感觉他认可吗?
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-4 10:47

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表