我有一个string在一个Android应用程序,我想转换成一个JSONObject.在string这个样子的(除了时间更长,实际值,而不是我这里输入的虚拟值):
[[{"1":"a"}],[{"1a":"1a","1b":"1b"},{"2a":"2a","2b":"2b"}]]
Run Code Online (Sandbox Code Playgroud)
我已将其精确地输入string到两个在线版中JSON validator,并且它们都确认它是有效的JSON data.所以我假设JSONObject构造函数能够接受这个字符串并将其转换为JSONObject.但是当我尝试:
json = new JSONObject(result);
Run Code Online (Sandbox Code Playgroud)
其中"result"是包含上面列出的字符串的String变量,我得到以下异常:
JSONException: A JSONObject text must begin with '{' at character 1 of [[{"1":"a"}],[{"1a":"1a","1b":"1b"},{"2a":"2a","2b":"2b"}]]
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?这个JSONObject解析器坏了吗?
1.我有这样的json对象如何能够访问android
2中的所有值.在任何人投票之前,我想说我已经搜索了stackoverflow的类似示例,但这些示例包含JSONObject,然后是JSONArray
3.Here in我的情况一切都是JSONObject所以我有点困惑
{
"1":
{"sno":"10","latitude":"31.249441437085455","longitude":"75.70003598928452"},
"2":
{"sno":"11","latitude":"31.249398442090207","longitude":"75.70003397762775"}
}
Run Code Online (Sandbox Code Playgroud)
这就是我如何使它成为JSONObject
1.Below代码返回我的输出就像所有JSONObject
2.有什么办法让"1"和"2"作为JSONArray?
$select_rows = "select sno,latitude,longitude from activities where username='$username'";
if ($result = mysql_query($select_rows)) {
$num_of_fields = mysql_num_fields($result);
$num_of_rows = mysql_num_rows($result);
$i = 0;
$j = 1;
while ($retrieved = mysql_fetch_array($result)) {
for ($i = 0; $i < $num_of_fields; $i++) {
$field_name = mysql_field_name($result, $i);
$object[$j][$field_name] = $retrieved[$field_name];
}
$j++;
}
echo json_encode($object);
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用我的应用程序登录,facebook login但我收到的回复jsonObject只是id和名称,而我请求的时候没有别的loginButton.setReadPermissions("public_profile").任何人都可以找出问题所在?这是我的代码.
public class LoginActivity extends AppCompatActivity {
LoginButton loginButton;
CallbackManager callbackManager;
String id, name, gender, ageRange;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
setContentView(R.layout.activity_login);
loginButton=(LoginButton)findViewById(R.id.login_button);
callbackManager= CallbackManager.Factory.create();
loginButton.setReadPermissions("public_profile");
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
AccessToken accessToken=loginResult.getAccessToken();
GraphRequest graphRequest= GraphRequest.newMeRequest(accessToken, new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject jsonObject, GraphResponse graphResponse) {
if (jsonObject!=null)
{
Log.e("JSON Object",jsonObject.toString());
Log.e("GraphResponse",graphResponse.toString());
try
{
id=jsonObject.getString("id");
name=jsonObject.getString("name");
gender=jsonObject.getString("gender");
ageRange=jsonObject.getString("age_range");
}
catch (JSONException e)
{
e.printStackTrace(); …Run Code Online (Sandbox Code Playgroud) 我正在使用net.sf.json.JSONObject.当我尝试使用put方法将数据放入Json对象时,key如果我的值为null,它将被删除.
有没有办法保留我的密钥,因为它在我的对象中,即使我的值为null?
对于前
JSONObject json = new JSONObject();
json.put("myKey",null);
JSONObject json = new JSONObject();
json.put("myKey",null);
然后我的输出是: {}
但我想要
输出: {"myKey",""}
我能怎么做?
我是Android开发的新手.
考虑到JSON Carrier与XML相比的轻巧性,我纯粹喜欢使用JSON Objects和Arrays作为我的简单应用程序.
我对ArrayAdapter提出了挑战,要求填充ListView.
这就是我如何克服并需要你的建议.
Extend the Adaptor class.
Run Code Online (Sandbox Code Playgroud)
然后将JSONArray传递给构造函数.
这里构造函数使用设置JSONArray长度的虚拟 String数组调用super .
将构造函数参数存储在类中以供进一步使用.
public myAdaptor(Context context, int resource, JSONArray array)
{
super(context, resource, new String[array.length()]);
// Store in the local varialbles to the adapter class.
this.context = context;
this.resource = resource;
this.profiles = objects;
}
Run Code Online (Sandbox Code Playgroud)
该getView()会做的工作获取从JSONArray一个JSONObjects建立视图.
public View getView(int position, View convertView, ViewGroup parent)
{
View view;
if (convertView == null)
{
LayoutInflater inflater = (LayoutInflater)
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(resource, parent, false);
} …Run Code Online (Sandbox Code Playgroud) 我试图将json值解析为我的Android应用程序.在这里,我被困在一个地方,我需要在json arraylist中有对象长度.
下面是我的json:
"events": { //json object
"2012-11-30": [ // json array
{
"privacy": "OPEN",
"name": "LOGDGE"
}
],
"2013-08-17": [
{
"privacy": "OPEN",
"name": "Party: Dinner and Dancing"
}
],
"2013-09-14": [
{
"privacy": "OPEN",
"name": "Party: Dinner and Dancing"
}
],
"2013-09-27": [
{
"privacy": "OPEN",
"name": "Salsa Party!"
}
{
"privacy": "OPEN",
"name": "Dance Performance Course",
}
],
"2013-10-23": [
{
"privacy": "OPEN",
"name": "Dance Performance Course"
}
]
}
Run Code Online (Sandbox Code Playgroud)
现在我的问题是我如何解析以获得json数组的长度:
我有下面的 JSON 响应,我想计算“ref_id”对象中字符串匹配的出现次数。但是我不知道在遍历数组并计算匹配项时从哪里开始。我应该开始的任何帮助或建议将不胜感激
{
"tag": "checkthisServer",
"success": 1,
"error": 0,
"svd_ids": [
{
"ref_id": "f91e2651"
},
{
"ref_id": "f91e2651"
},
{
"ref_id": "ue87sr5d"
},
{
"ref_id": "f91e2651"
}
{
"ref_id": "ue87sr5d"
}
]
}
Run Code Online (Sandbox Code Playgroud)
输出应该是:
f91e2651: 3
ue87sr5d: 2
Run Code Online (Sandbox Code Playgroud) 下面的java代码
JSONObject obj = new JSONObject();
try{
obj.put("alert","•é");
byte[] test = obj.toString().getBytes("UTF-8");
logger.info("bytes are"+ test);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
};
Run Code Online (Sandbox Code Playgroud)
生成一个 JSONObject 转义项目符号字符,但不是带有严重的拉丁字母 e,例如 ""\u2022é",字节码为 [123, 34, 97, 108, 101, 114, 116, 34, 58, 34, 92, 117, 50, 48, 50, 50, -61, -87, 34, 125]
如何在 Javascript 中获得相同的精确输出(就字节序列而言)?我不明白为什么 JSONObject 只转义一个字符而不转义另一个。我不知道它遵循什么规则。
似乎在 javascript 中,我只能转义除 ASCII 以外的所有内容(例如。\u007f-\uffff)或根本不转义。
谢谢!
我的以下json数据:
{
"Alex": {
"id": "54e23a2331ac67b1490d87b8",
"desc": "bla bla",
"no": 2
},
"Kodie": {
"id": "54e23a2331ac67b1490d87b9",
"desc": "bla bla",
"no": 13
},
"Lache": {
"id": "54e23a2331ac67b1490d87af",
"desc": "bla bla",
"no": 89
}
}
Run Code Online (Sandbox Code Playgroud)
如何在android系统中使用以下代码?
JSONObject object = new JSONObject(data);
for (int i = 0; i < object.length(); i++) {
//desc = object.getString("desc");
}
Run Code Online (Sandbox Code Playgroud)
对不起,我可以告诉你很多,因为我的英语非常糟糕.
我正在使用JsonObject解析来自API的响应,问题是生成的String具有双引号,如何获取不带引号的字符串?
JsonElement jelement = new JsonParser().parse(response);
JsonObject jobject = jelement.getAsJsonObject();
String authorization = jobject.get("authorization").toString();
Log.d("mensa","parseado jwt :"+authorization);
Run Code Online (Sandbox Code Playgroud)
所以我的回应看起来像...
parseado jwt:“ eyJ0eXAiOiJKV1QiLCJhbGciO ...”
实际的Json回应
{
"authorization": "eyJ0eXAiOiJKV1..."
}
Run Code Online (Sandbox Code Playgroud)
解析此字符串的正确方法是什么,这样我就不会用双引号将其包裹起来?
jsonobject ×10
android ×7
json ×6
arrays ×4
java ×3
android-json ×2
facebook ×1
javascript ×1
listview ×1
unicode ×1