下面的代码,jsonStr长度非常长,java报错常量字符串过长,怎么解决 public static void main(String[] args) { String jsonStr = ""; JSONArray jsonArray = JSON.parseArray(jsonStr); List<Map<String, Object>> list = new ArrayList<>(); for (int i = 0; i < jsonArray.size(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); Map<String, Object> map = new HashMap<>(); map.put("id", jsonObject.getString("id")); map.put("name", jsonObject.getString("name")); map.put("parentId", jsonObject.getString("parentId")); list.add(map); } List<Map<String, Object>> treeList = buildTree(list); System.out.println(treeList); } private static List<Map<String, Object>> buildTree(List<Map<String, Object>> list) { List<Map<String, Object>> treeList = new ArrayList<>(); for (Map<String, Object> map : list) { String parentId = (String) map.get("parentId"); if (parentId == null || "".equals(parentId)) { treeList.add(map); } for (Map<String, Object> it : list) { String id = (String) it.get("parentId"); if (map.get("id").equals(id)) { if (map.get("children") == null) { List<Map<String, Object>> children = new ArrayList<>(); children.add(it); map.put("children", children); } else { ((List<Map<String, Object>>) map.get("children")).add(it); } } } } return treeList; }
时间: 2023-02-17 19:41:20 浏览: 176
你好! 我看到你的代码中有一个变量名为`jsonStr`的字符串变量,你说它的长度非常长,导致程序运行时报错。
如果你想要解决这个问题,你可以使用以下几种方法之一:
1. 将字符串分割成多个较短的字符串,然后使用 `+` 运算符将它们连接起来
2. 使用 `StringBuilder` 类来构建字符串
3. 将字符串保存到一个文件中,然后读取文件内容来获取字符串
4. 使用 `InputStream` 和 `OutputStream` 类来操作字符串
举个例子,你可以使用第一种方法将字符串分割成较短的字符串然后连接起来,如下所示:
```
String jsonStr = "";
String str1 = "";
String str2 = "";
String str3 = "";
// 将 jsonStr 分割成三个较短的字符串
jsonStr = str1 + str2 + str3;
```
希望这些建议能帮助你解决问题! 如果你还有其他问题,请随时给我留言。
相关问题
请将下面代码 放到java main方法中 代码如下: public class paseJsonString { /* * @param jsonStr 未处理的json串 * @param keyWords 要获收的单元的父级key * @return result 处理完成的SON */ public String paseJsonString(string jsonStr,String keyWords) { String result="": try { JSONObject obj = JSONObiect.parse0bject(jsonStr); string objl=obj.toJsONString(); String str= objl.replace( target: "\\", replacement: "); //去除/ int index = str .indexOf(keyWords); result= str.substring(0,index+keyWords.length()+2)+""+str.substring(index+keyWords.length()+3,(str,length()-2))+"}"; }catch (Exception e){ e.printstackTrace(); } return result; } } }
抱歉,这段代码存在语法错误,无法直接放到 Java 的 main 方法中运行。以下是修正后的代码:
```
import com.alibaba.fastjson.JSONObject;
public class ParseJsonString {
/*
* @param jsonStr 未处理的json串
* @param keyWords 要获取的单元的父级key
* @return result 处理完成的JSON
*/
public static String parseJsonString(String jsonStr, String keyWords) {
String result = "";
try {
JSONObject obj = JSONObject.parseObject(jsonStr);
String objStr = obj.toJSONString();
String str = objStr.replace("\\", ""); // 去除反斜杠
int index = str.indexOf(keyWords);
result = str.substring(0, index + keyWords.length() + 2) + "" + str.substring(index + keyWords.length() + 3, str.length() - 2) + "}";
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
public static void main(String[] args) {
String jsonStr = "{\"name\":\"张三\",\"age\":18,\"address\":{\"province\":\"江苏省\",\"city\":\"南京市\",\"district\":\"鼓楼区\"}}";
String keyWords = "address";
String result = parseJsonString(jsonStr, keyWords);
System.out.println(result);
}
}
```
在 main 方法中,我们定义了一个 JSON 字符串和要获取的单元的父级 key,然后调用 `parseJsonString` 方法进行处理,并将结果打印出来。请注意,这里我们将类名改为了 `ParseJsonString`,并将方法名改为了 `parseJsonString`,以符合 Java 的命名规范。
String字符串转java对象 示例代码
假设有一个JSON字符串如下:
```
{
"name": "张三",
"age": 20,
"gender": "男"
}
```
可以通过以下代码将其转换为Java对象:
```java
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonToObject {
public static void main(String[] args) throws Exception {
String jsonStr = "{\"name\":\"张三\",\"age\":20,\"gender\":\"男\"}";
ObjectMapper objectMapper = new ObjectMapper();
Person person = objectMapper.readValue(jsonStr, Person.class);
System.out.println(person.getName());
System.out.println(person.getAge());
System.out.println(person.getGender());
}
}
class Person {
private String name;
private int age;
private String gender;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
}
```
上述代码使用Jackson库将JSON字符串转换为Java对象,并使用了Person类来描述对象结构。需要注意的是,Person类中的属性名必须要与JSON字符串中的键名相同,否则转换会失败。
阅读全文