json文件乱码怎么办?Java如何读取本地json文件?

进行java开发的过程中,我们经常会使用json工具进行文件解析,可是有时候我们解析文件会出现文件乱码,导致开发人员无法阅读,那下面来我们就来给大家讲解一下。

json文件乱码怎么办.jpg

json文件乱码怎么办?

我们在springmvc中使用json经常出现乱码格式 如下图:

json文件乱码怎么办?Java如何读取本地json文件?.png

解决办法一:

我们可以在@RequestMapping()中配置添加produces = "application/json;charset=utf-8",乱码得以解决。但是也出现一个问题,就是每次我们编写@RequestMapping()都需要添加produces = "application/json;charset=utf-8"

解决办法二:

所以我们可以在springmvc的配置文件上添加一段消息StringHttpMessageConverter转换配置!

<mvc:annotation-driven>
        <mvc:message-converters register-defaults="true">
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <constructor-arg value="UTF-8"/>
            </bean>
            <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                <property name="objectMapper">
                    <bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
                        <property name="failOnEmptyBeans" value="false"/>
                    </bean>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>

这时候问题已经解决了,但是!我比较衰,第一次处理这样问题还是没有解决我中文乱码,我就自己琢磨了一下将springmvc中配置文件”UTF-8“改为”GBK“神奇的解决了乱码

Java如何读取本地json文件?

如下所示:

//读取json文件地址
/* String path = getClass().getClassLoader().getResource("menu.json").toString();
path = path.replace("\\", "/");
if (path.contains(":")) {
 path = path.replace("file:/", "");
}*/
ClassPathResource resource = new ClassPathResource("menu.json");
File filePath = resource.getFile();
JSONArray btnArray = null;
//读取文件
String input = FileUtils.readFileToString(filePath, "UTF-8");
//将读取的数据转换为JSONObject
JSONObject jsonObject = JSONObject.fromObject(input);
if (jsonObject != null)
{
    //取出按钮权限的数据
    btnArray = jsonObject.getJSONArray("btnList");
}
Map < String, List < MenuVo >> btnMap = new HashMap < > ();
Iterator < Object > num = btnArray.iterator();
//遍历JSONArray,转换格式。按按钮集合按模块(name)放入map中
while (num.hasNext())
{
    JSONObject btn = (JSONObject) num.next();
    btnMap.put((String) btn.get("name"), JSONArray.toList((JSONArray) btn.get("children"), new MenuVo(), new JsonConfig()));
}

json文件

{
    "btnList": [
        {
            "name": "用户管理"
            , "children": [
                {
                    "id": "yhgladd"
                    , "name": "添加"
  }
                , {
                    "id": "yhgledit"
                    , "name": "编辑"
  }
                , {
                    "id": "yhgldelete"
                    , "name": "暂停"
  }
                , {
                    "id": "yhglstart"
                    , "name": "启用"
  }
                , {
                    "id": "yhglsee"
                    , "name": "查看"
  }
  ]
 }
        , {
            "name": "角色管理"
            , "children": [
                {
                    "id": "jsgladd"
                    , "name": "添加"
  }
                , {
                    "id": "jsgledit"
                    , "name": "编辑"
  }
                , {
                    "id": "jsglauth"
                    , "name": "授权"
  }
                , {
                    "id": "jsgldelete"
                    , "name": "删除"
  }
  ]
 }
 ]
}

这样我们就可以读取json本地文件了,当然本地文件需要保存好,文件丢失或者错误都会造成无法读取哦!最后大家如果想要了解更多json工具教程知识,敬请关注奇Q工具网。

推荐阅读:

java框架难学吗?java框架先学哪个?

java线程池满了怎么办?java线程池满了解决方法

java咋写简单算式?java写简易算式测试实例