两者的区别:dowellin意思是在...成绩好;在...做得好;在...表现好,表示一种情况也可指在具体的一次活动中表现出色;begoodat擅长...;善于...;在(某方面)出色,强调一种笼统情况。good只是形容词用来修饰名词,如果遇到动词必须用well来强调“好”。
begoodat例句:
Ibegoodatassociationwithperson。我善于与人交往。
Ateachershouldbegoodatdrawinginferencesaboutothercasesfromoneinstance。老师要善于举一反三。
IknewitwassomethingIwasgoingtobegoodat。我知道那是我擅长的东西。
dowellin例句:
IguessIcandowellinmyself。我想我会做好我自己的。
AndIknowyoudowellinmaths。我知道你数学学得好。
Imustdowellintheexams。因为我必须在考试中取得好成绩。
Asisseenbyusall,thesmart;Becauseofplayingmobileph;
Asisseenbyusall。
thesmart;Becauseofplayingmobileph;。
As
is
seen
by
us
all,
the
smart
mobile
phone
has
been
playing
an
increasingly
important
role
in
our
day-to-day
life.
It
has
influenced
us
lot,
especially
on
our
communication.
被我们所有人,智能手机已经在我们的日常生活中发挥着越来越重要的作用。它影响了我们很多,特别是在我们的沟通。
Because
of
playing
mobile
phones,
more
people
become
silent.
They
do
nothing
but
bow
to
play
mobile
phones.
What
it
brings
to
us
addicted
us
to
it.
Many
people
spend
too
much
time
on
the
phone,
and
they
don't
have
time
to
interact
with
person
in
real
life,
which
result
in
the
absence
of
ability
in
communication
in
reality.
As
we
become
more
and
more
indifferent,
many
bad
things
will
happen.
We
have
to
talk
with
people
and
develop
our
ability
to
communicate
in
reality.
因为玩手机,越来越多的人变得沉默。他们什么都不做,但低头玩手机。它带给我们上瘾。很多人花太多的时间在电话里,他们没有时间在现实生活中与人互动,导致没有在现实中进行交流的能力。我们变得越来越冷漠,许多坏事会发生。我们必须与人在现实和发展我们的沟通能力。
这个需要导入个jar包的,自己写太麻烦,而且要考虑特殊字符的转义的。
1. json-lib是一个java类库,提供将Java对象,包括beans, maps, collections, java arrays and XML等转换成JSON,或者反向转换的功能。
2. json-lib 主页 : http://json-lib.sourceforge.net/。
3.执行环境
需要以下类库支持
jakarta commons-lang 2.5。
jakarta commons-beanutils 1.8.0。
jakarta commons-collections 3.2.1。
jakarta commons-logging 1.1.1。
ezmorph 1.0.6
4.功能示例
这里通过JUnit-Case例子给出代码示例。
package com.mai.json;。
import static org.junit.Assert.assertEquals;。
import java.util.ArrayList;。
import java.util.Date;。
import java.util.HashMap;。
import java.util.Iterator;。
import java.util.List;。
import java.util.Map;。
import net.sf.ezmorph.Morpher;。
import net.sf.ezmorph.MorpherRegistry;。
import net.sf.ezmorph.bean.BeanMorpher;。
import net.sf.json.JSONArray;。
import net.sf.json.JSONObject;。
import net.sf.json.util.JSONUtils;。
import org.apache.commons.beanutils.PropertyUtils;。
import org.junit.Test;。
public class JsonLibTest {。
/*
* 普通类型、List、Collection等都是用JSONArray解析。
*
* Map、自定义类型是用JSONObject解析。
* 可以将Map理解成一个对象,里面的key/value对可以理解成对象的属性/属性值。
* 即{key1:value1,key2,value2......}。
*
* 1.JSONObject是一个name:values集合,通过它的get(key)方法取得的是key后对应的value部分(字符串)。
* 通过它的getJSONObject(key)可以取到一个JSONObject,--> 转换成map,。
* 通过它的getJSONArray(key) 可以取到一个JSONArray ,
*
*
*/
//一般数组转换成JSON。
@Test
public void testArrayToJSON(){。
boolean[] boolArray = new boolean[]{true,false,true}; 。
JSONArray jsonArray = JSONArray.fromObject( boolArray ); 。
System.out.println( jsonArray ); 。
// prints [true,false,true] 。
}
//Collection对象转换成JSON。
@Test
public void testListToJSON(){。
List list = new ArrayList(); 。
list.add( "first" ); 。
list.add( "second" ); 。
JSONArray jsonArray = JSONArray.fromObject( list ); 。
System.out.println( jsonArray ); 。
// prints ["first","second"] 。
}
//字符串json转换成json, 根据情况是用JSONArray或JSONObject。
@Test
public void testJsonStrToJSON(){。
JSONArray jsonArray = JSONArray.fromObject( "['json','is','easy']" ); 。
System.out.println( jsonArray ); 。
// prints ["json","is","easy"] 。
}
//Map转换成json, 是用jsonObject。
@Test
public void testMapToJSON(){。
Map map = new HashMap(); 。
map.put( "name", "json" ); 。
map.put( "bool", Boolean.TRUE ); 。
map.put( "int", new Integer(1) ); 。
map.put( "arr", new String[]{"a","b"} ); 。
map.put( "func", "function(i){ return this.arr[i]; }" ); 。
JSONObject jsonObject = JSONObject.fromObject( map ); 。
System.out.println( jsonObject ); 。
}
//复合类型bean转成成json。
@Test
public void testBeadToJSON(){。
MyBean bean = new MyBean();。
bean.setId("001");。
bean.setName("银行卡");。
bean.setDate(new Date());。
List cardNum = new ArrayList();。
cardNum.add("农行");。
cardNum.add("工行");。
cardNum.add("建行");。
cardNum.add(new Person("test"));。
bean.setCardNum(cardNum);。
JSONObject jsonObject = JSONObject.fromObject(bean);。
System.out.println(jsonObject);。
}
//普通类型的json转换成对象。
@Test
public void testJSONToObject() throws Exception{。
String json = "{name=\"json\",bool:true,int:1,double:2.2,func:function(a){ return a; },array:[1,2]}"; 。
JSONObject jsonObject = JSONObject.fromObject( json ); 。
System.out.println(jsonObject);。
Object bean = JSONObject.toBean( jsonObject ); 。
assertEquals( jsonObject.get( "name" ), PropertyUtils.getProperty( bean, "name" ) ); 。
assertEquals( jsonObject.get( "bool" ), PropertyUtils.getProperty( bean, "bool" ) ); 。
assertEquals( jsonObject.get( "int" ), PropertyUtils.getProperty( bean, "int" ) ); 。
assertEquals( jsonObject.get( "double" ), PropertyUtils.getProperty( bean, "double" ) ); 。
assertEquals( jsonObject.get( "func" ), PropertyUtils.getProperty( bean, "func" ) ); 。
System.out.println(PropertyUtils.getProperty(bean, "name"));。
System.out.println(PropertyUtils.getProperty(bean, "bool"));。
System.out.println(PropertyUtils.getProperty(bean, "int"));。
System.out.println(PropertyUtils.getProperty(bean, "double"));。
System.out.println(PropertyUtils.getProperty(bean, "func"));。
System.out.println(PropertyUtils.getProperty(bean, "array"));。
List arrayList = (List)JSONArray.toCollection(jsonObject.getJSONArray("array"));。
for(Object object : arrayList){。
System.out.println(object);。
}
}
//将json解析成复合类型对象, 包含List。
@Test
public void testJSONToBeanHavaList(){。
String json = "{list:[{name:'test1'},{name:'test2'}],map:{test1:{name:'test1'},test2:{name:'test2'}}}";。
// String json = "{list:[{name:'test1'},{name:'test2'}]}";。
Map classMap = new HashMap();。
classMap.put("list", Person.class);。
MyBeanWithPerson diyBean = (MyBeanWithPerson)JSONObject.toBean(JSONObject.fromObject(json),MyBeanWithPerson.class , classMap);。
System.out.println(diyBean);。
List list = diyBean.getList();。
for(Object o : list){。
if(o instanceof Person){。
Person p = (Person)o;。
System.out.println(p.getName());。
}
}
}
//将json解析成复合类型对象, 包含Map。
@Test
public void testJSONToBeanHavaMap(){。
//把Map看成一个对象。
String json = "{list:[{name:'test1'},{name:'test2'}],map:{testOne:{name:'test1'},testTwo:{name:'test2'}}}";。
Map classMap = new HashMap();。
classMap.put("list", Person.class);。
classMap.put("map", Map.class);。
//使用暗示,直接将json解析为指定自定义对象,其中List完全解析,Map没有完全解析。
MyBeanWithPerson diyBean = (MyBeanWithPerson)JSONObject.toBean(JSONObject.fromObject(json),MyBeanWithPerson.class , classMap);。
System.out.println(diyBean);。
System.out.println("do the list release");。
List<Person> list = diyBean.getList();。
for(Person o : list){。
Person p = (Person)o;。
System.out.println(p.getName());。
}
System.out.println("do the map release");。
//先往注册器中注册变换器,需要用到ezmorph包中的类。
MorpherRegistry morpherRegistry = JSONUtils.getMorpherRegistry();。
Morpher dynaMorpher = new BeanMorpher( Person.class, morpherRegistry); 。
morpherRegistry.registerMorpher( dynaMorpher ); 。
Map map = diyBean.getMap();。
/*这里的map没进行类型暗示,故按默认的,里面存的为net.sf.ezmorph.bean.MorphDynaBean类型的对象*/。
System.out.println(map);。
/*输出:
{testOne=net.sf.ezmorph.bean.MorphDynaBean@f73c1[。
{name=test1}
], testTwo=net.sf.ezmorph.bean.MorphDynaBean@186c6b2[。
{name=test2}
]}
*/
List<Person> output = new ArrayList(); 。
for( Iterator i = map.values().iterator(); i.hasNext(); ){ 。
//使用注册器对指定DynaBean进行对象变换。
output.add( (Person)morpherRegistry.morph( Person.class, i.next() ) ); 。
}
for(Person p : output){。
System.out.println(p.getName());。
/*输出:
test1
test2
*/
}
}
with
同,与,和,跟
1、说明表示动作的词,
表示伴随的状态
increase
with
year
2、表示使用的工具,
手段
cut
meat
with
knife
3、表示一致
agree
with
you
4、说明名词,
表示事物的附属部分或所具有的性质(具有)tea。
with
sugar
in
表示服饰时指穿着;
戴着;
带着
也就是说person
with
glasses你可以理解为这个人的性质特征是带着眼镜,强调这个人的状态。dressed。
in
red就是指穿红色的衣服。
杰克的苹果:Jake's apple。
Jakes's apple 如果漂点加在s的后面,前面的名词为复数。指两个杰克的苹果,而且是二者共有关系。
加深一点来说的话,’s 后面可以加复数名词,但是s’只能加单数名词。