- 浏览: 2654861 次
- 来自: 杭州
文章分类
- 全部博客 (1188)
- webwork (4)
- 网摘 (18)
- java (103)
- hibernate (1)
- Linux (85)
- 职业发展 (1)
- activeMQ (2)
- netty (14)
- svn (1)
- webx3 (12)
- mysql (81)
- css (1)
- HTML (6)
- apache (3)
- 测试 (2)
- javascript (1)
- 储存 (1)
- jvm (5)
- code (13)
- 多线程 (12)
- Spring (18)
- webxs (2)
- python (119)
- duitang (0)
- mongo (3)
- nosql (4)
- tomcat (4)
- memcached (20)
- 算法 (28)
- django (28)
- shell (1)
- 工作总结 (5)
- solr (42)
- beansdb (6)
- nginx (3)
- 性能 (30)
- 数据推荐 (1)
- maven (8)
- tonado (1)
- uwsgi (5)
- hessian (4)
- ibatis (3)
- Security (2)
- HTPP (1)
- gevent (6)
- 读书笔记 (1)
- Maxent (2)
- mogo (0)
- thread (3)
- 架构 (5)
- NIO (5)
- 正则 (1)
- lucene (5)
- feed (4)
- redis (17)
- TCP (6)
- test (0)
- python,code (1)
- PIL (3)
- guava (2)
- jython (4)
- httpclient (2)
- cache (3)
- signal (1)
- dubbo (7)
- HTTP (4)
- json (3)
- java socket (1)
- io (2)
- socket (22)
- hash (2)
- Cassandra (1)
- 分布式文件系统 (5)
- Dynamo (2)
- gc (8)
- scp (1)
- rsync (1)
- mecached (0)
- mongoDB (29)
- Thrift (1)
- scribe (2)
- 服务化 (3)
- 问题 (83)
- mat (1)
- classloader (2)
- javaBean (1)
- 文档集合 (27)
- 消息队列 (3)
- nginx,文档集合 (1)
- dboss (12)
- libevent (1)
- 读书 (0)
- 数学 (3)
- 流程 (0)
- HBase (34)
- 自动化测试 (1)
- ubuntu (2)
- 并发 (1)
- sping (1)
- 图形 (1)
- freemarker (1)
- jdbc (3)
- dbcp (0)
- sharding (1)
- 性能测试 (1)
- 设计模式 (2)
- unicode (1)
- OceanBase (3)
- jmagick (1)
- gunicorn (1)
- url (1)
- form (1)
- 安全 (2)
- nlp (8)
- libmemcached (1)
- 规则引擎 (1)
- awk (2)
- 服务器 (1)
- snmpd (1)
- btrace (1)
- 代码 (1)
- cygwin (1)
- mahout (3)
- 电子书 (1)
- 机器学习 (5)
- 数据挖掘 (1)
- nltk (6)
- pool (1)
- log4j (2)
- 总结 (11)
- c++ (1)
- java源代码 (1)
- ocr (1)
- 基础算法 (3)
- SA (1)
- 笔记 (1)
- ml (4)
- zokeeper (0)
- jms (1)
- zookeeper (5)
- zkclient (1)
- hadoop (13)
- mq (2)
- git (9)
- 问题,io (1)
- storm (11)
- zk (1)
- 性能优化 (2)
- example (1)
- tmux (1)
- 环境 (2)
- kyro (1)
- 日志系统 (3)
- hdfs (2)
- python_socket (2)
- date (2)
- elasticsearch (1)
- jetty (1)
- 树 (1)
- 汽车 (1)
- mdrill (1)
- 车 (1)
- 日志 (1)
- web (1)
- 编译原理 (1)
- 信息检索 (1)
- 性能,linux (1)
- spam (1)
- 序列化 (1)
- fabric (2)
- guice (1)
- disruptor (1)
- executor (1)
- logback (2)
- 开源 (1)
- 设计 (1)
- 监控 (3)
- english (1)
- 问题记录 (1)
- Bitmap (1)
- 云计算 (1)
- 问题排查 (1)
- highchat (1)
- mac (3)
- docker (1)
- jdk (1)
- 表达式 (1)
- 网络 (1)
- 时间管理 (1)
- 时间序列 (1)
- OLAP (1)
- Big Table (0)
- sql (1)
- kafka (1)
- md5 (1)
- springboot (1)
- spring security (1)
- Spring Boot (3)
- mybatis (1)
- java8 (1)
- 分布式事务 (1)
- 限流 (1)
- Shadowsocks (0)
- 2018 (1)
- 服务治理 (1)
- 设计原则 (1)
- log (0)
- perftools (1)
最新评论
-
siphlina:
课程——基于Python数据分析与机器学习案例实战教程分享网盘 ...
Python机器学习库 -
san_yun:
leibnitz 写道hi,我想知道,无论在92还是94版本, ...
hbase的行锁与多版本并发控制(MVCC) -
leibnitz:
hi,我想知道,无论在92还是94版本,更新时(如Puts)都 ...
hbase的行锁与多版本并发控制(MVCC) -
107x:
不错,谢谢!
Latent Semantic Analysis(LSA/ LSI)算法简介 -
107x:
不错,谢谢!
Python机器学习库
json主要有两种形式,分别是object和array,采用递归解析json字符串。
import org.codehaus.jackson.JsonParser; public interface ValueParser { public ValueBean parse(JsonParser jsonParser); }
import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.codehaus.jackson.JsonParseException; import org.codehaus.jackson.JsonParser; import org.codehaus.jackson.JsonToken; public class BaseValueParser implements ValueParser { public BaseValueParser(){ super(); } protected Map parseObject(JsonParser jsonParser) throws JsonParseException, IOException { JsonToken jsonToken = jsonParser.getCurrentToken(); if (jsonToken == null) { jsonToken = jsonParser.nextToken(); } Map<String, Object> object = new HashMap<String, Object>(); while ((jsonToken = jsonParser.nextToken()) != JsonToken.END_OBJECT) { String key = jsonParser.getText(); JsonToken nextToken = jsonParser.nextToken(); if (isSimpleValue(nextToken)) { String value = jsonParser.getText(); object.put(key, value); } else { ValueBean vb = parse(jsonParser); Object value = vb.isObject() ? vb.getObject() : vb.getArray(); object.put(key, value); } } return object; } protected List<Object> parseArray(JsonParser jsonParser) throws JsonParseException, IOException { JsonToken jsonToken = jsonParser.getCurrentToken(); if (jsonToken == null) { jsonToken = jsonParser.nextToken(); } List<Object> list = new ArrayList<Object>(); while ((jsonToken = jsonParser.nextToken()) != JsonToken.END_ARRAY) { if (isSimpleValue(jsonToken)) { String value = jsonParser.getText(); list.add(value); } else { ValueBean vb = parse(jsonParser); Object value = vb.isObject() ? vb.getObject() : vb.getArray(); list.add(value); } } return list; } protected boolean isSimpleValue(JsonToken jsonToken) { return !jsonToken.equals(JsonToken.START_ARRAY) && !jsonToken.equals(JsonToken.START_OBJECT); } public ValueBean parse(JsonParser jsonParser) { ValueBean vb = new ValueBean(); try { JsonToken jsonToken = jsonParser.getCurrentToken(); if (jsonToken == null) { jsonToken = jsonParser.nextToken(); } if (JsonToken.START_OBJECT.equals(jsonToken)) { vb.setObject(parseObject(jsonParser)); return vb; } else if (JsonToken.START_ARRAY.equals(jsonToken)) { vb.setArray(parseArray(jsonParser)); return vb; } else { throw new RuntimeException("parser json error,jsonParser is" + jsonParser); } } catch (Exception e) { throw new RuntimeException(e); } } }
单元测试
import org.codehaus.jackson.JsonParser; import com.duitang.dboss.resolve.BaseDataResolverFactory; import com.duitang.dboss.resolve.DataResolverFactory; public class ValueParseTester { public static void main(String[] args) { ValueParser parser = new BaseValueParser(); DataResolverFactory dataResolverFactory = new BaseDataResolverFactory(); JsonParser jsonParser = dataResolverFactory.getJsonParser("{'tagSet': ['a', 'b'], 'page': '1'}"); ValueBean result = parser.parse(jsonParser); System.out.println(result.getObject()); jsonParser = dataResolverFactory.getJsonParser("{'tagSet': [1, 2], 'page': '1'}"); result = parser.parse(jsonParser); System.out.println(result.getObject()); jsonParser = dataResolverFactory.getJsonParser("{'tagSet': [1.12, 2.34], 'page': '1'}"); result = parser.parse(jsonParser); System.out.println(result.getObject()); jsonParser = dataResolverFactory.getJsonParser("{'tagSet': [{'id':1,'name':2}], 'page': '1'}"); result = parser.parse(jsonParser); System.out.println(result.getObject()); } }
发表评论
-
RingBufferTester
2015-05-17 11:26 704package mytest; import java ... -
clean code--两种不同代码写法。
2014-02-20 15:32 729clean code--两种不同代码写法。 ... -
CRC32 quick code
2014-02-19 11:25 501CRC32 使用的example code // CRC ... -
solr query code
2014-02-14 10:36 643http://10.246.45.41:51276/sol ... -
solr code quick start
2014-02-07 10:19 920客户端项目依赖: <project xmlns=& ... -
查看网络的脚本
2014-01-22 14:52 637贴一段code net.sh #!/bin/ba ... -
hbase example code
2014-01-16 16:58 1053本地连接hbase: Configuration con ... -
python和linux命令交互方式总结
2014-01-09 10:11 1782python和linux命令交互有两种方式: 1. 直接 ... -
hdfs例子之读写MapFile
2014-01-03 10:16 2150package mytest; import jav ... -
hbase API code
2013-12-26 16:11 0package mytest; import jav ... -
几种file copy的性能对比
2013-12-16 10:45 1678测试了几种file copy的性能: package m ... -
netty StringDecoderTester
2013-02-21 16:55 1033netty package com.duita ... -
python md5
2012-11-30 16:29 0import hashlib def md5(data) ... -
友好的泛型Collections
2012-09-23 16:31 1104在java程序中用的最多的就是泛型容器,比如: Map< ... -
从nginx日志读取URL来做性能测试
2012-09-15 19:58 2979做性能测试的时候都希望能模拟用户的行为,ningx记录了用户的 ... -
测试-Xss对方法调用栈的影响
2012-02-06 15:02 4package test; /** * 测试-X ...
相关推荐
例如,我们可以设计一个`parse()`函数,它接受一个字符串作为输入,然后递归地解析JSON数据。遇到左大括号时,调用`parse_object()`;遇到左方括号,调用`parse_array()`;遇到引号,调用`parse_string()`等。 ```...
以下是一个简单的递归解析JSON字符串的例子: ```javascript function recursiveParse(jsonStr) { try { let jsonObj = JSON.parse(jsonStr); if (typeof jsonObj === 'object' && !Array.isArray(jsonObj)) { ...
此方法接收一个JSON字符串作为参数,然后调用递归方法处理。 “解析索引数组”意味着类可能还包括对索引数组(即下标为连续整数的数组)的处理。在PHP中,数组可以通过`is_array`和`array_keys`结合使用`count`函数...
- **JSON.parse()函数**:JavaScript原生提供了JSON.parse()方法,用于将一个JSON字符串转化为JavaScript对象。但在本文件中,可能还包含了自定义的逻辑,比如错误处理、格式化输出或自定义的解析规则。 - **格式...
`json-c`就是这样一个专门用于C语言的JSON解析库,它提供了对JSON数据的读取、创建、修改和序列化等功能,使得C程序员可以方便地与JSON格式进行交互。 `json-c`库的核心特性包括: 1. **解析和生成JSON**:`json-c...
深度解析-json 递归解析字符串化的 json 并返回 javascript 对象用法 npm install --save deep-parse-json or yarn add deep-parse-json const { deepParseJson } = require('deep-parse-json') const stringified =...
它还增加了atoJSONString方法和parseJSON方法到Object.prototype。使用thisfile recommended.json_parse.js:该文件包含替代JSON的parse函数thatuses递归下降而不是eval.json_parse_state.js:此文件包含替代JSON的...
JSONParse是处理JSON数据的一个关键过程,尤其在Java编程语言中,我们需要使用特定的方法来解析JSON字符串或文件,将其转换为可操作的对象。 在Java中,有多种库可以用来进行JSON解析,例如Google的Gson库、Jackson...
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于JavaScript的一个子集,易于人阅读和编写,同时也易于机器解析和生成。在本文中,我们将探讨一种简单的JSON解析方法,通过自定义的JavaScript...
当遇到一个JSON对象时,`parseValue()`方法会递归调用`parseJSON()`,将JSON对象转换为另一个Hashtable。遇到JSON数组时,`parseArray()`会被调用,将数组元素逐个解析并添加到Vector中。 例如,给定以下JSON字符串...
6. **parseJSON2List()方法**: 这个方法接收一个JSON字符串,将其解析为`JSONArray`,然后遍历数组中的每个`JSONObject`,调用`parseJSON2Map()`方法将每个对象转换为Map,并添加到列表中。 7. **parseJSON2Map()...
例如,当尝试解析的字符串不是有效的JSON格式时,`JSON.parse()`会抛出一个错误。我们需要捕获这个错误,并根据具体需求进行处理。 总的来说,理解和掌握JSON解析是现代Web开发的基本技能之一。无论你是前端开发者...
下面将详细介绍 `dbo.parseJSON` 函数的具体实现,该函数的主要目的是将 JSON 字符串解析成一个表格结构,以便于进一步处理。 ##### 1. 函数定义 ```sql CREATE FUNCTION [dbo].[parseJSON](@JSON NVARCHAR(MAX)) ...
例如,一个简单的JSON查看器可以使用递归函数来处理嵌套的对象和数组,创建树状结构。当用户点击某个键时,对应的值(如果是对象或数组)会折叠或展开。以下是一个基本的实现思路: 1. 接收JSON字符串,用`JSON....
- `prepare`:这个方法尝试将读取的原始JSON字符串解析为Python对象。如果失败,则会引发异常。 - `line_intend`:用于生成指定缩进级别的字符串。 - `parse_dict`:用于格式化字典类型的JSON数据,它递归地处理字典...
以下是一个简单的 JSON 结构实例: ```json var jsongood = { "parentId": "null", "productId": 1, "name": "商品", "amount": "null", "goods": [ { "parentId": "null", "productId": 11, "name": ...
这个方法假设JSON数据是一个数组,每个元素是一个对象,对象的属性名对应于DataTable的列名,属性值作为数据。如果JSON数据结构复杂,可能需要进行额外的处理。 在实际项目中,根据业务需求,你可以将这个方法封装...
2. **加载JSON字符串**:获取到JSON数据后,第一步通常是将其转换为一个可操作的对象。在Python中,这可以通过`json.loads()`函数实现,将JSON字符串转化为Python字典或列表。在Java和JavaScript中,对应的函数分别...
`JSON.parse()`方法接收一个JSON字符串作为参数,并将其转化为JavaScript对象。例如: ```javascript var jsonString = '{"name":"John","age":30,"city":"New York"}'; var jsonObject = JSON.parse(json...