JAva Jsonクエリー
7989 ワード
package test;
//json , 。
// , parseString ,parseObject 。
// , 、 …… 。
//json , map 。map , . 。
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;
import java.util.Scanner;
class NUN{
int i = 0;
}
public class Main {
static public String parseString(String str, NUN i) {
// String tmp="";//tmp
StringBuffer sb = new StringBuffer();
if (str.charAt(i.i) == '"')
i.i++;//
while (i.i < str.length()) {
if (str.charAt(i.i) == '\\') {// \
i.i++;
// tmp += str.charAt(i);
sb.append(str.charAt(i.i));
i.i++;
} else if (str.charAt(i.i) == '"') {//
i.i++;//
break;
} else {
sb.append(str.charAt(i.i));
// tmp += str.charAt(i);
i.i++;
}
}
// if (str.charAt(i.i) == '"')
// i.i++; //
return sb.toString();
}
static public void parseObject(String str, String prefix, Map dict, NUN i) {
if (str.charAt(i.i) == '{')
i.i++;// prefix
String key = "";
String value;// key value
Boolean strType = false;// false:key, true:value, key value
while (i.i < str.length()) {
if (str.charAt(i.i) == '"') {// key value
String tmp = parseString(str, i);
if (strType) {// value
value = tmp;
dict.put(key, value);
} else {// key
key = prefix + (prefix == "" ? "" : ".") + tmp;// prefix , .
}
} else if (str.charAt(i.i) == ':') {// value
strType = true;
i.i++;
} else if (str.charAt(i.i) == ',') {// key
strType = false;
i.i++;
} else if (str.charAt(i.i) == '{') {//
dict.put(key, "");//
parseObject(str, key, dict, i);
} else if (str.charAt(i.i) == '}') {//
i.i++;
break;
} else {
i.i++;//
}
}
// if (str.charAt(i.i) == '}') {// json
// i.i++;
// }
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int N = in.nextInt();
int M = in.nextInt();
String json = new String();
in.nextLine();// in.nextInt
for (int n = 0; n < N; n++) {
String tmp;
tmp = in.nextLine();
json += tmp;// ,
}
Map dict = new HashMap();
NUN i = new NUN();
parseObject(json, "", dict, i);
String query;
for (int m = 0; m < M; m++) {
query = in.nextLine();
if (!dict.containsKey(query)) {
System.out.println("NOTEXIST");
} else {
if (dict.get(query).equals("")) {
System.out.println("OBJECT");
} else {
System.out.println("STRING " + dict.get(query));
}
}
}
}
}