如何从Java中解析Google Chrome和Mozilla Firefox中导出的书签文件.是否有任何库可以直接解析它们并获取其中的URL.
另外,欢迎使用Java解析它们的示例代码.
我想在 Java 中将 String 解析为内部 JSON 对象(或等效对象)。通常的库Gson和Jackson,对于我的需求来说太慢了(根据我的基准,每个 String 到 Json 解析的速度都超过 100us)。我知道有稍微快一点的库,但是查看在线基准测试,可用的收益会很小(不到一个数量级的改进)。
如果我事先知道 JSON 的格式,有没有办法可以更快地解析它?例如,我知道 String 将是以下格式的 JSON:
{
"A" : 1.0 ,
"B" : "X"
}
Run Code Online (Sandbox Code Playgroud)
即,我知道两个键是“A”和“B”,值分别是双精度值和字符串。鉴于这种格式的高级知识,是否有一个库或某种方法可以比平时更快地解析 JSON?
当我尝试解析JSON时,我收到一个非常奇怪的错误.实际上,文件非常简单,由一个简单的对象组成如下:
{
"registered":false,
"firstname":"xxx",
"name":"yyyy",
"email":"yyyy.xxx@gmail.com",
"picture":"xxxxx.jpg",
"username":"xxxy"
}
Run Code Online (Sandbox Code Playgroud)
为了解析这个文件,我使用了以下代码,其灵感来自Android SDK的示例:
public static boolean isRegistered(int nmb) {
boolean toReturn = true;
JsonReader reader = null;
try {
reader = new JsonReader(new InputStreamReader(new URL("xxx").openConnection().getInputStream()));
reader.beginObject();
while(reader.hasNext()) {
String name = reader.nextName();
Log.i("Next value", name);
switch (name) {
case "registered":
toReturn = reader.nextBoolean();
break;
case "firstname":
ProfileManager.getInstance().setFirstname(reader.nextString());
break;
case "name":
ProfileManager.getInstance().setName(reader.nextString());
break;
case "email":
break;
case "picture":
break;
case "username":
break;
}
}
reader.endObject();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch …Run Code Online (Sandbox Code Playgroud) 阅读后:用Java获取"外部"IP地址
码:
public static void main(String[] args) throws IOException
{
URL whatismyip = new URL("http://automation.whatismyip.com/n09230945.asp");
BufferedReader in = new BufferedReader(new InputStreamReader(whatismyip.openStream()));
String ip = in.readLine(); //you get the IP as a String
System.out.println(ip);
}
Run Code Online (Sandbox Code Playgroud)
我以为我是胜利者,但我得到以下错误
Exception in thread "main" java.io.IOException: Server returned HTTP response code: 403 for URL: http://automation.whatismyip.com/n09230945.asp
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at java.net.URL.openStream(Unknown Source)
at getIP.main(getIP.java:12)
Run Code Online (Sandbox Code Playgroud)
我认为这是因为服务器没有足够快的响应,无论如何确保它将获得外部IP?
编辑:好吧所以它被拒绝,其他人都知道另一个可以做同样功能的网站
Stackoverflow中有很多示例来展示如何解析JSON。但是没有一个例子对我有用,我想我有一个普遍的问题,我不明白:
我在以下陈述中得到一个错误:
JSONObject obj2 = new JSONObject("{interests : [{interestKey:Dogs}, {interestKey:Cats}]}");
Run Code Online (Sandbox Code Playgroud)
例外:
Exception in thread "main" java.lang.RuntimeException: Stub!
at org.json.JSONObject.<init>(JSONObject.java:7)
at JSONTest.main(JSONTest.java:44)
Run Code Online (Sandbox Code Playgroud)
我正在使用Java 1.7和库org.json
可能是什么原因 ?
我无法弄清楚,我应该反序列化这种类型的 json 对象:
{
"value":integer",
"total":1",
"records":138",
"rows":[
{
"value1":6,
"value2":true,
"bool":true,
"floatNumber":140.41",
"floatNumber2":28.7",
"floatNumber3":140.41",
"cssClassName":""",
"date":"19/03/2022"",
"UTCdate":"2016-03-22T00:00:00+0000"",
"UTCdate2":"2016-03-24T20:45:25+0000"
},
{
"value1":6,
"value2":true,
"bool":true,
"floatNumber":140.41",
"floatNumber2":28.7",
"floatNumber3":140.41",
"cssClassName":""",
"date":"19/03/2022"",
"UTCdate":"2016-03-22T00:00:00+0000"",
"UTCdate2":"2016-03-24T20:45:25+0000"}
]}
但我不知道该怎么办。我希望将此项目添加到我的类中,指出为相应的属性分配什么值。
我尝试使用 Flexjson 库,但没有看到任何可以让我做我想做的事情的函数。
从哪儿开始?
PS:我从未将对象序列化为 JSON,所以我不知道它是如何工作的。
在我的项目中,我有一个像这样的数组列表:
{"data":
[
{"Title": "Fiat 500", "Url":"http://lh5.ggpht.com/-wgCH-P1bWCo/UWW_eCUXsVI/AAAAAAAMaKI/MlRF0GzwF8Y/s1200/Fiat-Abarth-500-US-6%25255B2%25255D.jpg"},
{"Title": "Alfa Romeo", "Url": "http://i.auto-bild.de/ir_img/1/2/4/5/4/9/7/Alfa-Romeo-4C-Spider-Vorstellung-und-Preis-1200x800-24a91d418ddbd1fa.jpg"},
{"Title": "500L", "Url":"http://cdn1.autoexpress.co.uk/sites/autoexpressuk/files/fiat-500-turbo-front-action.jpg"},
{"Title": "Egea", "Url":"https://pbs.twimg.com/media/C6vp_VcU4AAaM0t.jpg"},
{"Title": "Maserati", "Url":"http://lh4.ggpht.com/-CjXVq7s2roU/U06cyjInzjI/AAAAAAAQwvI/xuJUZ0BbOUw/s1200/Maserati-Centennial-1%25255B2%25255D.jpg"},
{"Title": "Lancia", "Url":"http://lh6.ggpht.com/_FoXyvaPSnVk/TWl73Gr0lmI/AAAAAAAECw0/ZK7nAKZ6mdY/s1200/Lancia-Chrysler-30%5B5%5D.jpg"},
{"Title": "Jeep", "Url":"http://lh3.ggpht.com/-1UvJYZn4fR0/UyGvPSDIrZI/AAAAAAAQdR0/s2c70tIu1i0/s1200/Jeep-2%25255B3%25255D.jpg"},
{"Title": "Ferrari", "Url":"http://fm.cnbc.com/applications/cnbc.com/resources/img/editorial/2016/02/05/103366052-1957s.jpg?v=1454698344"},
{"Title": "Alfa Romeo", "Url":"http://lh3.ggpht.com/-lYmpe0bGJko/UnqlBB040wI/AAAAAAAO4yE/HbUaH9RxWR8/s1200/Alfa-Romeo-Gloria-Concept-by-IED-1%25255B4%25255D.jpg"},
{"Title": "Maserati", "Url":"http://zonderpump.com/images/maserati-granturismo-sport-can-you-feel-it2.jpg"}
]
}
Run Code Online (Sandbox Code Playgroud)
我想添加这样的项目 ,但是 viewpager 和适配器只获得一项。所以我想让我的 ArrayList 维度并设置如下文本:textview.setText(list.getUsername[0 or 1]);
我怎样才能做到这一点。非常感谢。顺便说一句,我发现了这段代码:
function listToMatrix(list, elementsPerSubArray) {
var matrix = [], i, k;
for (i = 0, k = -1; i < list.length; i++) {
if (i % elementsPerSubArray === 0) {
k++; …Run Code Online (Sandbox Code Playgroud) 我有以下 JSON 字符串:
{ "students" : "[ {\"studentId\" : \"A1\",\"studentNumber\"
: \"287\",\"studentType\" : \"FullTime\"} ]" }
Run Code Online (Sandbox Code Playgroud)
为了在java对象中反序列化这个字符串,我必须删除\,这可以使用字符串替换方法来完成。除此之外,[ ] 之前和之后也有双引号。如何删除这些双引号或在使用 Jackson 反序列化时允许它们。
尝试使用json.simple库解析以下JSON字符串时:
[
{"id" : "6d7662a9.f8ba04"},
{"id" : "2da98cc2.145ba4"},
{"id" : "45492640.a17d68"}
]
Run Code Online (Sandbox Code Playgroud)
我得到这个例外:
java.lang.ClassCastException: org.json.simple.JSONArray cannot be cast to org.json.simple.JSONArray
Run Code Online (Sandbox Code Playgroud)
这就是我的做法:
JSONArray json = (JSONArray) new JSONParser().parse(jsonString);
Run Code Online (Sandbox Code Playgroud)
JSON字符串是一个数组,因此不确定为什么会引发该异常。
这里有几个类似的问题,但是在他们的情况下,他们试图将a强制转换JSONObject为a,JSONArray因此抛出异常是有意义的,但在这种情况下,它看起来是正确的。
-----------------编辑-----------------
我添加了一行来打印对象的类,如下所示:
Object json = new JSONParser().parse(jsonString);
System.out.println(json.getClass());
Run Code Online (Sandbox Code Playgroud)
打印以下行:
class org.json.simple.JSONArray
Run Code Online (Sandbox Code Playgroud)
在下一行中,如果出现以下情况,则显示为:
if(json instanceof JSONArray) {
System.out.println("This is a JSONArray");
}
Run Code Online (Sandbox Code Playgroud)
但是它不访问if,所以它真的很奇怪,因为首先我检查对象是否为JSONArray,但它不会打印 "This is a JSONArray"