一、JSON
def list=[new Personal(name:'john',age:25), new Personal(name:'major',age:26)]def json=JsonOutput.toJson(list)def jsonSlurper=new JsonSlurper()def beanList=jsonSlurper.parseText(json)println beanList
toJson:将实体转为字符串
parseText:将字符串转为实体
二、XML文件处理
1、读取xml文件数据
final String xml='''<response version-api="2.0"><value><books id="1" classification="android"><book available="20" id="1"><title>疯狂android讲义</title><author id="1">李刚</author></book><book available="20" id="2"><title>疯狂JAVA讲义</title><author id="2">疯子</author></book><book available="20" id="3"><title>疯狂PHP讲义</title><author id="3">李刚</author></book></books></value></response>'''//开始解析xml数据def xmlSluper=new XmlSlurper()def response=xmlSluper.parseText(xml)//println response.value.books[0].book[0].title.text()//println response.value.books[0].@classification.text()//response.value.books.book.each{// it.each{// println it.title// }//}////深度遍历xml数据//response.depthFirst().findAll{// if(!it.title.isEmpty()){// println it.title// }//}//广度遍历xml数据def name=response.value.books.children().findAll{it.name()=='book'}.collect {return it.title.text()}println name
提供了多种遍历方式
2、生成xml文件数据
/**
* 生成xml格式
* <langs type='current' count='3' mainstream='true>
* <language flavor='static' version='1.5'>Java</language>
* <language flavor='dynamic' version='1.6'>Groovy</language>
* </langs>
*/
def sw=new StringWriter()
def xml=new MarkupBuilder(sw) //用于生成xml数据的核心类
//根节点langs创建成功
xml.langs(type:'current',count:'3',mainstream:'true'){
//生成language指点,值不指定key即可
language(flavor:'static',version:'1.5','Java')
language(flavor:'dynamic',version:'1.6','Groovy')
}
//将sw的内容保存到文件即可生成xml文件
println sw
生成指定字符串的xml文件数据
class Langs{
String type='current'
int count=3
boolean mainstream=true
def language=ArrayList<Lanuage>
}
class Lanuage{
String flavor
String version
String value
}
def languageList=[] as Lanuage[]
languageList+=new Lanuage(flavor: 'static',version: '1.5',value:'Java')
languageList+=new Lanuage(flavor: 'dynamic',version: '1.7',value: 'Groovy')
def langs=new Langs(type: 'current',count: '3',mainstream: 'true',language:languageList)
def sw=new StringWriter()
def xml=new MarkupBuilder(sw) //用于生成xml数据的核心类
xml.langs(type:langs.type,count:langs.count,mainstream: langs.mainstream){
langs.language.each {
language(flavor: it.flavor,version:it.version,it.value)
}
}
println sw
将实体对象转为xml数据
3、文件处理
def file=new File('../MyGrooxy2s.iml')
//遍历
//file.eachLine {
// println it
//}
//只有文本
//def text=file.getText()
//println text
//直接输出没有分页
//def result=file.readLines()
//println result
//
//通过reader读取部分数据
//def reader=file.withReader {
// char[] buffer=new char[100]
// it.read(buffer)
// return buffer
//}
//println reader
不需要关闭流,groovy已经帮我们关闭了留
copy('../MyGrooxy2s.iml','../ssss.text')
def copy(String sourcePath,String destationPath){
try{
var sourcePathFile=new File(sourcePath)
var destationFile=new File(destationPath)
if(!sourcePathFile.exists()){
println "文件不存在"
return
}
var fileText=sourcePathFile.getText()
// 往文件中写,没有文件会自动创建
destationFile.withWriter {
it.write(fileText)
}
}
catch(Exception e){
e.printStackTrace()
}
}
读取并写入文件
