小编nam*_*olk的帖子

解码JSON字符串以在Java中生成对象时的解析问题

场景:

我正在使用以下代码解码JSON字符串以使用它生成对象。

在此处输入图片说明

{"av":{"tid":"1000","sslist":[{"ss":{"ssId":"1","ssName":"Test ss "name one"}},{"ss":{"ssId":"2","ssName":"Test ss name two"}}],"hl":{"lc":0}}}
Run Code Online (Sandbox Code Playgroud)

现在,我有几百元sslist,所有的失败,因为一个血淋淋"ssName第一ss要素。

但是,当String在createJsonParser()方法的最开始处进行解析时,会引发此错误。

题 :

我只想忽略容易出错的节点,而继续处理其他数百个正确的节点。还有其他方法吗?

代码:

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.JsonNode;

public class JsonReader {

        private void readJsonMethodThree(String jsonString) throws JsonParseException, IOException{

            ObjectMapper    mapper          = new ObjectMapper();
            JsonFactory     factory         = mapper.getJsonFactory();
            JsonParser      jsonParser      = factory.createJsonParser(jsonString);
            JsonNode        jsonNode        = mapper.readTree(jsonParser);

        }

}
Run Code Online (Sandbox Code Playgroud)

例外情况:

Exception in thread "main" com.fasterxml.jackson.core.JsonParseException: Unexpected character ('n' (code 110)): was expecting comma to separate OBJECT entries
 at …
Run Code Online (Sandbox Code Playgroud)

java json jackson

5
推荐指数
1
解决办法
3万
查看次数

有什么办法可以“ CAST” ArrayList到CopyOnWriteArrayList

我知道,当

java.lang.Object
  -> java.util.concurrent.CopyOnWriteArrayList<E>
Run Code Online (Sandbox Code Playgroud)

java.lang.Object 
  -> java.util.AbstractCollection<E>
      -> java.util.AbstractList<E>
          -> java.util.ArrayList<E>
Run Code Online (Sandbox Code Playgroud)

但是我想要的是将的行为添加CopyOnWriteArrayListArrayList

例如:
我想做以下事情。但是tstArry是一个ArrayList。不是CopyOnWriteArrayList

for(TestCls testCls : tstArry)
    if(testCls.getVal1().equals("a1"))
        tstArry.remove(testCls);
Run Code Online (Sandbox Code Playgroud)

还是这是完成工作的唯一方法?

for(int i = 0; i < tstArry.size(); i++)
    if(tstArry.get(i).getVal1().equals("a1"))
        tstArry.remove(i--);
Run Code Online (Sandbox Code Playgroud)

tstArry是我没有控件的类中的ArrayList。因此,请把ArrayList的类型更改为另一种是最有效的解决方案。

java collections

4
推荐指数
1
解决办法
5917
查看次数

我必须删除@Override注释吗?

以下代码在附近发出错误 public void control() {.

EClipse还提供了一个提示,可以删除@Override注释.我去了docs.oracle,发现如果用@Override 标记的方法无法正确覆盖其中一个超类中的方法,编译器会生成错误.

我不明白"无法​​正确覆盖"是什么意思?

public class PersistenceFlowController implements controllers.FlowController {
   @Override
   public void control() {
      // Do some works here
   }
}


package controllers;
public interface FlowController {   
   void control();  
}
Run Code Online (Sandbox Code Playgroud)

java annotations

3
推荐指数
1
解决办法
5480
查看次数

使用@Test(enabled = false)优于在TestNG中注释@Test注释

我知道@Test(enabled = false)会忽略带注释方法的测试.
但为什么我们不能只注释注释要忽略.

我的意思是使用@Test(enabled = false)评论 @Test注释的优势是什么?

java testng

3
推荐指数
1
解决办法
319
查看次数

在postgres SQL中,NOT IN和NOT EXISTS之间有所不同

这是我的桌子.
info.student_info表

当我使用NOT IN执行以下查询时,它给了我namal和Ann.

SELECT firstname 
FROM info.student_info 
WHERE firstname NOT IN (SELECT firstname 
                        FROM info.student_info 
                        WHERE lastname IS NULL)
Run Code Online (Sandbox Code Playgroud)

但是当我使用NOT EXISTS执行以下查询时,它没有给我任何行.

SELECT firstname 
FROM info.student_info 
WHERE NOT EXISTS (SELECT firstname 
                  FROM info.student_info 
                  WHERE lastname IS NULL)
Run Code Online (Sandbox Code Playgroud)

为什么是这样?我已经研究了NOT IN和NOT EXISTS的一些领域,但未能找到答案.

sql postgresql

3
推荐指数
1
解决办法
2800
查看次数

编译器如何识别永远不会从java中的try语句主体抛出异常

当我抓住ParseException(代码1)时,编译器会喊" Unreachable catch block for ParseException. This exception is never thrown from the try statement body".但当我赶上Exception(代码2)时,它是一个愚蠢的.为什么是这样?

代码1:

try {
    int i = 0;
}catch (ParseException e1) { //Unreachable catch block for ParseException. This exception is never thrown from the try statement body
    e1.printStackTrace();   
}
Run Code Online (Sandbox Code Playgroud)

代码2:

try {
    int i = 0;
}catch (Exception e2) { // ............. (dumbed???)
    e2.printStackTrace();   
}
Run Code Online (Sandbox Code Playgroud)

注意:我在其他地方意外地注意到了这一点.上面只是一个模拟的例子.

java exception

3
推荐指数
1
解决办法
601
查看次数

如何按名称到达数组?

我有2个像这样的数组:

var windows_array = [];
var google_array = [];
Run Code Online (Sandbox Code Playgroud)

在这里,我希望通过传递网络到达指定的数组.

function add_friends(network, friend){
    (network + '_array').push(friend);
}

function get_friends(network){
    var d = $('.div_out');
    for(var i=0; i< (network + '_array').Length; i++){
        d.append('<div>' + (network + '_array')[i].name + '</div>')
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是如何在jQuery中完成它?

我知道在PHP中它是可能的.

javascript arrays jquery

3
推荐指数
1
解决办法
80
查看次数

静态块java中的常量问题

我有两个关于静态块和常量的问题,下面的代码.

  1. 常量(甚至简单的静态变量)不能直接从静态块引用.它给出了"在定义之前无法引用字段"的错误.但是通过静态方法访问时可以.
  2. 如果我为静态块的catch中的常量赋值,如下所述,则会给出错误,说"可能已经分配了最终字段NAME".但是如果在捕获时它会给出错误,说"空白的最终字段NAME可能尚未初始化".

我想知道为什么会这样?

代码:

public class TestStaticblock {

    static{
        try {
//          NAME = dummyStringValue() + NAME_APPENDER; // Cannot reference a field before it is defined
//          NAME = dummyStringValue() + getNameAppender(); // This is OK

            NAME = dummyStringValue();
        } catch (Exception e) {
            NAME = null; // The final field NAME may already have been assigned
        }
    }

    private static String dummyStringValue() throws Exception{
        return "dummy";
    }

    private static String getNameAppender() throws Exception{
        return NAME_APPENDER;
    }

    private static …
Run Code Online (Sandbox Code Playgroud)

java static exception-handling

3
推荐指数
1
解决办法
486
查看次数

用于检查重复项的String和HashSet之间的最佳(性能+内存)是什么

我想做一个简单的实现,根据bigCodeList中包含重复项的不同代码(aCode)做一些操作.下面我提到了两种方法,我想知道的是哪种方法在性能副+内存消耗方面更有效?


方法1:

    String tempStr = "";

    for(String aCode : bigCodeList){
        if(tempStr.indexOf(aCode) == -1) {
            // deal With the aCode related work
            tempStr += aCode+"-"
        }
    }
Run Code Online (Sandbox Code Playgroud)

方法2:

        HashSet<String> tempHSet = new HashSet<String>();

        for(String aCode : bigCodeList){

            if(tempHSet.add(aCode)){

                // deal With the aCode related work

            }

        }
Run Code Online (Sandbox Code Playgroud)

注意:aCode是一个像LON一样的三字母代码

java memory performance

2
推荐指数
1
解决办法
147
查看次数

如何创建没有时间戳的java日期对象

我想创建一个没有TimeZone的Date对象(例如:) 2007-06-21.这可能吗?

当我使用以下方法打印时Thu Jun 21 00:00:00 GMT 2007

SimpleDateFormat  sdf       = new SimpleDateFormat("yyyy-MM-dd");

TimeZone          timeZone  = TimeZone.getTimeZone("GMT");
timeZone.setDefault(timeZone);
sdf.setTimeZone(timeZone);

Date              pickUpDate = sdf.parse("2007-06-21");
System.out.println(pickUpDate);
Run Code Online (Sandbox Code Playgroud)

java timezone date simpledateformat

2
推荐指数
1
解决办法
3061
查看次数