[{"name":"rpd","id":255,"type":"MONITOR","available":true,"unitId":1,"ip":"99.7.7.243"},{"name":"jiankong","id":1873,"type":"MONITOR","available":true,"unitId":1,"ip":"99.7.7.233"},{"name":"monitor rpd","id":259,"type":"MONITOR","available":true,"unitId":1,"ip":"99.7.7.241"},{"name":"总行1604V","id":174,"type":"HDX","available":true,"unitId":1,"ip":"99.7.7.134"},{"name":"总行1603V","id":2270,"type":"HDX","available":true,"unitId":1,"ip":"99.7.7.133"},{"name":"总行1602V","id":2268,"type":"HDX","available":true,"unitId":1,"ip":"99.7.7.132"},{"name":"研发六楼603","id":2187,"type":"HDX","available":true,"unitId":1,"ip":"99.1.113.61"},{"name":"上海金融","id":2189,"type":"HDX","available":true,"unitId":1,"ip":"99.14.64.231"}]以上是json数据
public class EndpointInfo {
long id;
String type;
String name;
String ip;
boolean available;
long unitId;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public long getUnitId() {
return unitId;
}
public void setUnitId(long unitId) {
this.unitId = unitId;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
public boolean getAvailable() {
return available;
}
public void setAvailable(boolean available) {
this.available = available;
}
}我对应的bean类private static ArrayList<EndpointInfo> m_endpointinfolist = null;
Type typeoft = new TypeToken<ArrayList<EndpointInfo>>(){}.getType();
m_endpointinfolist = gson.fromJson(sb.toString(),typeoft);private static final ObjectMapper mapper = new ObjectMapper();
private static ArrayList<EndpointInfo> m_endpointinfolist = null;
private static ArrayList<EndpointInfo> m_endpointinfolist = null;
m_endpointinfolist = mapper.readValue(sb.toString(), new TypeReference<ArrayList<EndpointInfo>>(){});以上是使用的2个包,debug都是可以顺利解析的,但是我打包成jar之后就会出现异常java json webservicejavajsonwebservicejson解析
public class EndpointInfo {
long id;
String type;
String name;
String ip;
boolean available;
long unitId;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public long getUnitId() {
return unitId;
}
public void setUnitId(long unitId) {
this.unitId = unitId;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
public boolean getAvailable() {
return available;
}
public void setAvailable(boolean available) {
this.available = available;
}
}我对应的bean类private static ArrayList<EndpointInfo> m_endpointinfolist = null;
Type typeoft = new TypeToken<ArrayList<EndpointInfo>>(){}.getType();
m_endpointinfolist = gson.fromJson(sb.toString(),typeoft);private static final ObjectMapper mapper = new ObjectMapper();
private static ArrayList<EndpointInfo> m_endpointinfolist = null;
private static ArrayList<EndpointInfo> m_endpointinfolist = null;
m_endpointinfolist = mapper.readValue(sb.toString(), new TypeReference<ArrayList<EndpointInfo>>(){});以上是使用的2个包,debug都是可以顺利解析的,但是我打包成jar之后就会出现异常java json webservicejavajsonwebservicejson解析
org.codehaus.jackson.JsonParseException: Unexpected character ('i' (code 105)): was expecting comma to separate OBJECT entries
at [Source: java.io.StringReader@14c194d; line: 1, column: 1388]
at org.codehaus.jackson.JsonParser._constructError(JsonParser.java:929)
at org.codehaus.jackson.impl.JsonParserBase._reportError(JsonParserBase.java:632)
at org.codehaus.jackson.impl.JsonParserBase._reportUnexpectedChar(JsonParserBase.java:565)
at org.codehaus.jackson.impl.ReaderBasedParser.nextToken(ReaderBasedParser.java:113)
at org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:339)
at org.codehaus.jackson.map.deser.BeanDeserializer.deserialize(BeanDeserializer.java:281)
at org.codehaus.jackson.map.deser.CollectionDeserializer.deserialize(CollectionDeserializer.java:68)
at org.codehaus.jackson.map.deser.CollectionDeserializer.deserialize(CollectionDeserializer.java:51)
at org.codehaus.jackson.map.deser.CollectionDeserializer.deserialize(CollectionDeserializer.java:21)
at org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:1282)
at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:892)
at com.calwan.main.conferenceProcesser.run(conferenceProcesser.java:333)
at java.lang.Thread.run(Thread.java:662)
这是使用gson包报的错误信息
org.codehaus.jackson.JsonParseException: Unexpected character ('i' (code 105)): was expecting comma to separate OBJECT entries
at [Source: java.io.StringReader@76e369; line: 1, column: 846]
at org.codehaus.jackson.JsonParser._constructError(JsonParser.java:929)
at org.codehaus.jackson.impl.JsonParserBase._reportError(JsonParserBase.java:632)
at org.codehaus.jackson.impl.JsonParserBase._reportUnexpectedChar(JsonParserBase.java:565)
at org.codehaus.jackson.impl.ReaderBasedParser.nextToken(ReaderBasedParser.java:113)
at org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:339)
at org.codehaus.jackson.map.deser.BeanDeserializer.deserialize(BeanDeserializer.java:281)
at org.codehaus.jackson.map.deser.CollectionDeserializer.deserialize(CollectionDeserializer.java:68)
at org.codehaus.jackson.map.deser.CollectionDeserializer.deserialize(CollectionDeserializer.java:51)
at org.codehaus.jackson.map.deser.CollectionDeserializer.deserialize(CollectionDeserializer.java:21)
at org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:1282)
at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:892)
at com.calwan.main.conferenceProcesser.run(conferenceProcesser.java:333)
at java.lang.Thread.run(Thread.java:662)
这是使用jackson 报的错误信息,
请帮忙看下,是不是我的bean类设计有错误,错在哪儿了
打包是用eclipse 的export导出,将所有依赖包一起打包,dos测试运行时报错
我的bean类public class EndpointInfo {
long id;
String type;
String name;
String ip;
boolean available;
long unitId;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public long getUnitId() {
return unitId;
}
public void setUnitId(long unitId) {
this.unitId = unitId;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
public boolean getAvailable() {
return available;
}
public void setAvailable(boolean available) {
this.available = available;
}
}
我的测试类
public class testMain { public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
File file = new File("abc.txt");
BufferedReader br = null;
br = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
StringBuilder sb = new StringBuilder();
String string ;
while ((string = br.readLine()) != null) {
sb.append(string);
}
ArrayList<EndpointInfo> m_endpointinfolist = null;
Gson gson = new Gson();
m_endpointinfolist = gson.fromJson(sb.toString(), new TypeToken<ArrayList<EndpointInfo>>(){}.getType());
ObjectMapper mapper = new ObjectMapper();
//m_endpointinfolist = mapper.readValue(sb.toString(), new TypeReference<ArrayList<EndpointInfo>>(){});
for(int i =0; i< m_endpointinfolist.size();i++)
{
System.out.println("第"+i+"组:");
System.out.println("id:"+m_endpointinfolist.get(i).getId()+" type:"+m_endpointinfolist.get(i).getType()+" ip:"+m_endpointinfolist.get(i).getIp()+" name:"+m_endpointinfolist.get(i).getName()+" unitid:"+m_endpointinfolist.get(i).getUnitId()+" available:"+m_endpointinfolist.get(i).getAvailable() );
}
System.in.read();
}
}
abc.txt :[{"name":"rpd","id":255,"type":"MONITOR","available":true,"unitId":1,"ip":"99.7.7.243"},{"name":"jiankong","id":1873,"type":"MONITOR","available":true,"unitId":1,"ip":"99.7.7.233"},{"name":"monitor rpd","id":259,"type":"MONITOR","available":true,"unitId":1,"ip":"99.7.7.241"},{"name":"总行1604V","id":174,"type":"HDX","available":true,"unitId":1,"ip":"99.7.7.134"},{"name":"总行1603V","id":2270,"type":"HDX","available":true,"unitId":1,"ip":"99.7.7.133"},{"name":"总行1602V","id":2268,"type":"HDX","available":true,"unitId":1,"ip":"99.7.7.132"},{"name":"研发六楼603","id":2187,"type":"HDX","available":true,"unitId":1,"ip":"99.1.113.61"}]依赖包是gson-2.2.4.jar
debug运行结果:第0组:
id:255 type:MONITOR ip:99.7.7.243 name:rpd unitid:1 available:true
第1组:
id:1873 type:MONITOR ip:99.7.7.233 name:jiankong unitid:1 available:true
第2组:
id:259 type:MONITOR ip:99.7.7.241 name:monitor rpd unitid:1 available:true
第3组:
id:174 type:HDX ip:99.7.7.134 name:总行1604V unitid:1 available:true
第4组:
id:2270 type:HDX ip:99.7.7.133 name:总行1603V unitid:1 available:true
第5组:
id:2268 type:HDX ip:99.7.7.132 name:总行1602V unitid:1 available:true
第6组:
id:2187 type:HDX ip:99.1.113.61 name:研发六楼603 unitid:1 available:true
但是我将这些打成jar包就会出异常:Exception in thread "main" com.google.gson.JsonSyntaxException: java.lang.Illega
lStateException: Expected BEGIN_ARRAY but was STRING at line 1 column 1
at com.google.gson.Gson.fromJson(Gson.java:815)
at com.google.gson.Gson.fromJson(Gson.java:768)
at com.google.gson.Gson.fromJson(Gson.java:717)
at com.calwan.test.testMain.main(testMain.java:75)
Caused by: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was STRING
at line 1 column 1
at com.google.gson.stream.JsonReader.beginArray(JsonReader.java:338)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.re
ad(CollectionTypeAdapterFactory.java:79)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.re
ad(CollectionTypeAdapterFactory.java:60)
at com.google.gson.Gson.fromJson(Gson.java:803)
... 3 more
请问是哪里的问题
流读入的时候设置下编码utf-8,没异常
br = new BufferedReader(new InputStreamReader(new FileInputStream(file),"utf-8"));
文档
另外,我也没明白,你打包是干什么?