java从字符串中提取值
我有如下值的字符串java从字符串中提取值,java,string,selenium,Java,String,Selenium,我有如下值的字符串 String s1 = "{"measurements": ["528391^MDC_DEV_SPEC_PROF^M12343"], "metrics": ["150021^MDC_PRESS_BLD_NONIN234^MDC", "150022^MDC_PRESS_BLD_NONINV_DIA^MDC", "150023^MDC_PRESS_BLD_12344^MDC", "149546^MDC_PULS_RATE_INV^MDC"], "accessoryTypes":
String s1 = "{"measurements": ["528391^MDC_DEV_SPEC_PROF^M12343"], "metrics": ["150021^MDC_PRESS_BLD_NONIN234^MDC", "150022^MDC_PRESS_BLD_NONINV_DIA^MDC", "150023^MDC_PRESS_BLD_12344^MDC", "149546^MDC_PULS_RATE_INV^MDC"], "accessoryTypes": [] }"
我只需要测量值
i、 e我的结果应该是:528391^MDC\u DEV\u SPEC\u PROF^M12343
请帮助解决这个问题。首先:创建一个与您的JSON作业相匹配的类,您必须至少完成并发布您的初始请求 第二:decise存储了JSON文件…因为您的字符串不是一个构建良好的字符串
第三:选择一个库GSON或core java…来提取JSON 2对象如果您的文本总是采用这种格式,并且您不想使用JSON解析它,那么您可以执行以下操作 自己做错误检查和健全性检查。 处理是否存在间距、未找到搜索键等
public static void main(String []args){
String s1 = " \"{\"measurements\": [\"528391^MDC_DEV_SPEC_PROF^M12343\"], \"metrics\": [\"150021^MDC_PRESS_BLD_NONIN234^MDC\", \"150022^MDC_PRESS_BLD_NONINV_DIA^MDC\", \"150023^MDC_PRESS_BLD_12344^MDC\", \"149546^MDC_PULS_RATE_INV^MDC\"], \"accessoryTypes\": [] }\"";
String testString = "measurements\": [\"";
String endString = "\"],";
System.out.println(s1);
String result = getValue(s1, testString, endString);
System.out.println("RESULT = "+result);
}
public static String getValue(String s1, String keyString, String endString){
int from = s1.indexOf(keyString) + keyString.length();
int to = s1.substring(from).indexOf(endString);
return s1.substring(from, from+to);
}
您的结果如下所示
$java -Xmx128M -Xms16M HelloWorld
"{"measurements": ["528391^MDC_DEV_SPEC_PROF^M12343"], "metrics": ["150021^MDC_PRESS_BLD_NONIN234^MDC", "150022^MDC_PRESS_BLD_NONINV_DIA^MDC", "150023^MDC_PRESS_BLD_12344^MDC", "149546^MDC_PULS_RATE_INV^MDC"], "accessoryTypes": [] }"
RESULT = 528391^MDC_DEV_SPEC_PROF^M12343
您可以使用以下命令分析此字符串:
这是用核心Java制作的。但是,我真的建议您使用一些JSON 2对象库。干净的方法应该是将其解析为JSON,但是如果这太过复杂,那么您可以编写一个带有正则表达式的匹配器,如下所示:
public String parseMeasurements(String s) {
final Matcher matcher = Pattern.compile("\"measurements\": \[\"(.*?)\"\]").matcher(s);
return matcher.group(1);
}
请检查括号是否被正确转义,正则表达式是否不是贪婪的,而是懒惰的,以便停止匹配第一个结束括号。这个在哪?应该使它变懒您可以将字符串传递给类,并从中获取DTO对象
import com.google.gson.GsonBuilder;
GsonBuilder gsonBuilder = new GsonBuilder();
MeasurementsDTO measurementsDTO = gsonBuilder.create().fromJson(s1,
MeasurementsDTO.class);
这回答了你的问题吗?不它不是JSON,纯粹是上面所说的字符串格式。考虑到你的问题,它确实看起来像是字符串格式的JSON。我还记得你的大问题!!!
Example example = parseJSON(input);
example.getMeasurements();
public String parseMeasurements(String s) {
final Matcher matcher = Pattern.compile("\"measurements\": \[\"(.*?)\"\]").matcher(s);
return matcher.group(1);
}
import com.google.gson.GsonBuilder;
GsonBuilder gsonBuilder = new GsonBuilder();
MeasurementsDTO measurementsDTO = gsonBuilder.create().fromJson(s1,
MeasurementsDTO.class);