我正在使用json-simple,我需要漂亮地打印JSON数据(使其更具人性化).
我无法在该库中找到此功能.这通常是如何实现的?
我想JSON用java使用json简单库来读取这个文件.
我的JSON文件看起来像这样:
[
{
"name":"John",
"city":"Berlin",
"cars":[
"audi",
"bmw"
],
"job":"Teacher"
},
{
"name":"Mark",
"city":"Oslo",
"cars":[
"VW",
"Toyata"
],
"job":"Doctor"
}
]
Run Code Online (Sandbox Code Playgroud)
这是我为阅读此文件而编写的java代码:
package javaapplication1;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Iterator;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
public class JavaApplication1 {
public static void main(String[] args) {
JSONParser parser = new JSONParser();
try {
Object obj = parser.parse(new FileReader("c:\\file.json"));
JSONObject jsonObject = (JSONObject) obj;
String name = (String) jsonObject.get("name");
System.out.println(name);
String city …Run Code Online (Sandbox Code Playgroud) 假设我们有下一个JSON字符串:
{
"name" : "John",
"age" : "20",
"address" : "some address",
"someobject" : {
"field" : "value"
}
}
Run Code Online (Sandbox Code Playgroud)
什么是最简单的(但仍然是正确的,即正则表达式是不可接受的)查找字段age及其值的方法(或确定没有给定名称的字段)?
ps任何开源库都可以.
ps2:拜托,不要发布图书馆的链接 - 这不是一个有用的答案.'给我看代码'(c).
我试图使用json simple迭代json对象.我已经看到了你可以从中做一个getJSONObject("child")的答案
{ "child": { "something": "value", "something2": "value" } }
Run Code Online (Sandbox Code Playgroud)
但如果我有什么东西呢?
{
"k1":"v1",
"k2":"v2",
"k3":"v3"
}
Run Code Online (Sandbox Code Playgroud)
并希望迭代该json对象.这个:
Iterator iter = jObj.keys();
Run Code Online (Sandbox Code Playgroud)
throws:找不到符号符号:方法keys()location:class org.json.simple.JSONObject
我是Java中使用json-simple库的新手,我已经完成了编码和解码示例.复制编码示例很好,但是我无法使用混合类型JSON来解码.
我的一个问题是库中有太多的类没有正确记录,而且我没有源(为了能够阅读并理解它们的用途).因此,我很难理解如何使用这些类.
看完这个例子后:
String jsonText = "{\"first\": 123, \"second\": [4, 5, 6], \"third\": 789}";
JSONParser parser = new JSONParser();
ContainerFactory containerFactory = new ContainerFactory(){
public List creatArrayContainer() {
return new LinkedList();
}
public Map createObjectContainer() {
return new LinkedHashMap();
}
};
try {
Map json = (Map)parser.parse(jsonText, containerFactory);
Iterator iter = json.entrySet().iterator();
System.out.println("==iterate result==");
while(iter.hasNext()) {
Map.Entry entry = (Map.Entry)iter.next();
System.out.println(entry.getKey() + "=>" + entry.getValue());
}
System.out.println("==toJSONString()==");
System.out.println(JSONValue.toJSONString(json));
} catch(ParseException pe) {
System.out.println(pe);
}
Run Code Online (Sandbox Code Playgroud)
我是Java的新手,并且一直很善良.话虽这么说,我正在尝试使用JSON库(包?类?Java术语真令人困惑!)并且在添加它们作为参考时遇到了问题.
这三个导入无法解决:
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.JSONValue;
Run Code Online (Sandbox Code Playgroud)
我去了json.org并下载了Java库,但我不知道如何处理它们.我试图进入项目属性并添加外部类无济于事.我注意到下载的文件夹里装满了.java文件.我应该怎么做这些?
很抱歉在这里提出这样一个菜鸟问题,但我很难过.
在Java中(使用json-simple)我已成功解析了使用JSON.stringify在JavaScript中创建的JSON字符串.它看起来像这样:
{"teq":14567,"ver":1,"rev":1234,"cop":15678}
Run Code Online (Sandbox Code Playgroud)
该字符串存储自定义JavaScript对象的状态,我现在希望将其重新构成纯Java类.它不顺利 - 首次涉足来自C#背景的Java.:-P
该对象目前采用org.json.simple.JSONObject的形式,因为这是json-simple从JSONParser.parse()操作生成的.
如何将此JSONObject强制转换为新的Java类?(其定义如下......)
public class MyCustomJSObject {
public int teq;
public int ver;
public int rev;
public int cop;
}
Run Code Online (Sandbox Code Playgroud) 在添加JSON.simple并启用MultiDex并获得以下错误后,我在android studio中遇到问题:
错误:任务':app:packageAllDebugClassesForMultiDex'的执行失败.java.util.zip.ZipException:重复条目:org/hamcrest/BaseDescription.class
这是我的build.gradle:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
applicationId "com.MildlyGoodApps.EffortlessDescriptions"
minSdkVersion 10
targetSdkVersion 23
versionCode 1
versionName "1.0"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:23.0.1'
compile 'com.googlecode.json-simple:json-simple:1.1.1'
compile 'com.android.support:multidex:1.0.0'
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
改compile 'com.googlecode.json-simple:json-simple:1.1.1'到compile('com.googlecode.json-simple:json-simple:1.1.1'){ exclude group: 'org.hamcrest', module: 'hamcrest-core' }.
谢谢Kane O'Riley!
我正在寻求服务,有时会得到这样的东西:
{ "param1": "value1", "param2": "value2" }
Run Code Online (Sandbox Code Playgroud)
有时会像这样得到回报:
[{ "param1": "value1", "param2": "value2" },{ "param1": "value1", "param2": "value2" }]
Run Code Online (Sandbox Code Playgroud)
我怎么知道我得到了什么?当我执行getClass()时,它们都评估为String但是如果我尝试这样做:
json = (JSONObject) new JSONParser().parse(result);
Run Code Online (Sandbox Code Playgroud)
在第二种情况下,我得到一个例外
org.json.simple.JSONArray cannot be cast to org.json.simple.JSONObject
Run Code Online (Sandbox Code Playgroud)
怎么避免这个?我想知道如何检查我要回来的.(第一种情况有时会[]在其中,所以我不能做索引,我想要一个更清洁的方式,而不仅仅是检查第一个字符.
必须有某种方法来检查这个?