精华内容
下载资源
问答
  • 2021-06-14 05:00:43

    JS循环遍历JSON数据

    本文提供了 JS 循环 JSON 数据列,以及 JS 循环遍历 JSON 数据的例子,供大家学习参考。

    1. json数据的列循环

    var len = json.length;

    for (var i = 0; i < len; i++)

    {

    for (obj in json[i])

    {

    var obj2 = obj;

    }

    }

    2. JS 循环遍历JSON数据JSON数据如:

    {"options":"[{/"text/":/"王家湾/",/"value/":/"9/"},{/"text/":/"李家湾/",/"valu

    e/":/"10/"},{/"text/":/"邵家湾/",/"value/":/"13/"}]"}

    用js循环遍历的方法如下://方法1,

    var data=[{name:"a",age:12},{name:"b",age:11},{name:"c",age:13},{name:"d",age:14}];

    for(var o in data){

    alert(o);

    alert(data[o]);

    alert("text:"+data[o].name+" value:"+data[o].age );

    }//方法2,

    function text(){

    var json = {"options":"[{/"text/":/"王家湾/",/"value/":/"9/"},{/"text/":/"李家湾/",/"value/":/"10/"},{/"text/":/"邵家湾/",/"value/":/"13/"}]"}

    json = eval(json.options)

    for(var i=0; i

    {

    alert(json[i].text+" " + json[i].value)

    }

    }

    更多相关内容
  • 此方法可快速循环遍历多级嵌套或树状json结构,根据传入的参数获得对应的父子节点的属性值。
  • 最近工作中,经常需要对json做解析,而json的格式又不统一,实际使用也就是获取json中的一个节点值。于是就想通过写json路径的方式来直接拿到节点值,这样就就不用对不同格式的json数据单独写解析方法了。下面这段...

    最近工作中,经常需要对json做解析,而json的格式又不统一,实际使用也就是获取json中的一个节点值。于是就想通过写json路径的方式来直接拿到节点值,这样就就不用对不同格式的json数据单独写解析方法了。下面这段代码能够很好的解决这个问题,给对于和我有同样需求的童鞋做个参考。另外对于接口测试,在我的phoenixframework平台中的phoenix_interface里面还有很多诸如此类的工具,会给开发工作带来很大的方便。

    import java.util.HashMap;

    import org.json.JSONArray;

    import org.json.JSONException;

    import org.json.JSONObject;

    public class JsonPaser {

    /**

    * 对节点进行解析

    *

    * @author mengfeiyang

    * @param obj

    * @param node

    * @return

    */

    private static JSONObject getObj(JSONObject obj, String node) {

    try {

    if (node.contains("[")) {

    JSONArray arr = obj.getJSONArray(node.substring(0,node.indexOf("[")));

    for (int i = 0; i < arr.length(); i++) {

    if ((i + "").equals(node.substring(node.indexOf("["),node.indexOf("]")).replace("[", ""))) {

    return arr.getJSONObject(i);

    }

    }

    } else {

    return obj.getJSONObject(node);

    }

    } catch (Exception e) {

    return obj;

    }

    return null;

    }

    /**

    * 获取节点值

    * @author mengfeiyang

    * @param jsonContent

    * @param jsonPath

    * @return

    * @throws Exception

    */

    public static synchronized String getNodeValue(String jsonContent, String jsonPath) throws Exception {

    String[] nodes = jsonPath.split("\\.");

    JSONObject obj = new JSONObject(jsonContent);

    for (int i = 1; i < nodes.length; i++) {

    if (obj != null) {

    obj = getObj(obj, nodes[i]);

    }

    if ((i + 1) == nodes.length) {

    try{

    return obj.getString(nodes[i]);

    }catch(Exception e){

    return "JSONException:"+e.getMessage()+",NodeString:"+obj.toString();

    }

    }

    }

    return null;

    }

    public static void main(String[] args) throws Exception {

    //构造json字符串

    String jsonContent = "{\"projectName\":\"JSON\",\"projectInfo\":{\"author\":\"test\",\"version\":1.0}}";

    String val = JsonPaser.getNodeValue(jsonContent, "JSON.projectInfo.author");

    System.out.println(val);//执行结果:test

    }

    }

    如上代码中json字符串的树结构如下:

    0818b9ca8b590ca3270a3433284dd417.png

    获取author的json路径就是:JSON.projectInfo.author,是不是方便了很多呢。

    在实际使用时,这样的json路径很容易获得,例如通过chrome的json插件。

    展开全文
  • 获取我尝试过的资源private void parseResult(String result) { try { JSONObject response = new JSONObject(result); JSONObject response2 = response.getJSONArray("articles"); JSONObject response3 = ...

    private void getWebApiData() {

    String WebDataUrl = "https://gnews.io/api/v3/top-news?&token=dd21eb88599ccb3411eaad9b314cde23";

    new AsyncHttpTask.execute(WebDataUrl);

    }

    @SuppressLint("StaticFieldLeak")

    public class AsyncHttpTask extends AsyncTask {

    @Override

    protected String doInBackground(String... urls) {

    String result = "";

    URL url;

    HttpsURLConnection urlConnection = null;

    try {

    url = new URL(urls[0]);

    urlConnection = (HttpsURLConnection) url.openConnection();

    if (result != null) {

    String response = streamToString(urlConnection.getInputStream());

    parseResult(response);

    return result;

    }

    } catch (MalformedURLException e) {

    e.printStackTrace();

    } catch (IOException e) {

    e.printStackTrace();

    }

    return null;

    }

    @Override

    protected void onPostExecute(String result) {

    if (result != null) {

    newsAdapter = new NewsAdapter(getActivity(), newsClassList);

    listView.setAdapter(newsAdapter);

    Toast.makeText(getContext(), "Data Loaded Successfully", Toast.LENGTH_SHORT).show();

    } else {

    Toast.makeText(getContext(), "Failed to load data!", Toast.LENGTH_SHORT).show();

    }

    progressBar.setVisibility(View.GONE);

    }

    }

    private String streamToString(InputStream stream) throws IOException {

    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(stream));

    String line;

    String result = "";

    while ((line = bufferedReader.readLine()) != null) {

    result += line;

    }

    // Close stream

    if (null != stream) {

    stream.close();

    }

    return result;

    }

    private void parseResult(String result) {

    try {

    JSONObject response = new JSONObject(result);

    JSONObject response2 = response.getJSONObject("articles");

    NewsClass newsClass;

    for (int i = 0; i < newsClass.length(); i++) {

    JSONObject post = newsClass.optJSONObject(i);

    String title = post.optString("title");

    newsClass = new newsClass();

    newsClass.setNews_Title(title);

    artistClassList.add(newsClass);

    }

    } catch (JSONException e) {

    e.printStackTrace();

    }

    }

    这是我正在使用的代码,用于获取文章的数据。获取我尝试过的资源private void parseResult(String result) {

    try {

    JSONObject response = new JSONObject(result);

    JSONObject response2 = response.getJSONArray("articles");

    JSONObject response3 = response2.getJSONObject("sources");

    NewsClass newsClass;

    for (int i = 0; i < newsClass.length(); i++) {

    JSONObject post = newsClass.optJSONObject(i);

    String title = post.optString("title");

    newsClass = new newsClass();

    newsClass.setNews_Title(title);

    artistClassList.add(newsClass);

    }

    } catch (JSONException e) {

    e.printStackTrace();

    }

    }

    但是我想我没有正确获得代码

    这是我尝试的第二个选项private void parseResult(String result) {

    try {

    JSONObject response = new JSONObject(result);

    JSONObject response = response2.getJSONObject("sources");

    NewsClass newsClass;

    for (int i = 0; i < newsClass.length(); i++) {

    JSONObject post = newsClass.optJSONObject(i);

    String title = post.optString("title");

    newsClass = new newsClass();

    newsClass.setNews_Title(title);

    artistClassList.add(newsClass);

    }

    } catch (JSONException e) {

    e.printStackTrace();

    }

    }

    但是这只给我空文本字段,用于填充数据的空格,但为空白请任何帮助将不胜感激

    展开全文
  • Java-Jackson JSON:从JSON获取节点名称如何使用Jackson从JSON树中接收节点名称?JSON文件看起来像这样:{node1:"value1",node2:"value2",node3:{node3.1:"value3.1",node3.2:"value3.2"}}我有JsonNode rootNode = ...

    Java-Jackson JSON:从JSON获取节点名称

    如何使用Jackson从JSON树中接收节点名称?JSON文件看起来像这样:

    {

    node1:"value1",

    node2:"value2",

    node3:{

    node3.1:"value3.1",

    node3.2:"value3.2"

    }

    }

    我有

    JsonNode rootNode = mapper.readTree(fileReader);

    并且需要类似的东西

    for (JsonNode node : rootNode){

    if (node.getName().equals("foo"){

    //bar

    }

    }

    谢谢。

    5个解决方案

    66 votes

    对于Jackson 2+(com.fasterxml.jackson),方法略有不同:

    Iterator> nodes = rootNode.get("foo").fields();

    while (nodes.hasNext()) {

    Map.Entry entry = (Map.Entry) nodes.next();

    logger.info("key --> " + entry.getKey() + " value-->" + entry.getValue());

    }

    Supun Sameera answered 2020-02-10T02:30:53Z

    63 votes

    此答案适用于2+之前的Jackson版本(最初写为1.8)。 请参阅@SupunSameera的答案,以获取与较新版本的Jackson兼容的版本。

    “节点名称”的JSON术语是“键”。 自"foo"不包含键,您需要进行不同的迭代:

    for (Map.Entry elt : rootNode.fields())

    {

    if ("foo".equals(elt.getKey()))

    {

    // bar

    }

    }

    如果只需要查看键,则可以使用"foo"进行一些简化:

    for (String key : rootNode.fieldNames())

    {

    if ("foo".equals(key))

    {

    // bar

    }

    }

    并且,如果您只想查找键为"foo"的节点,则可以直接访问它。 与使用循环相比,这将产生更好的性能(恒定时间查找)和更清晰的代码:

    JsonNode foo = rootNode.get("foo");

    if (foo != null)

    {

    // frob that widget

    }

    Matt Ball answered 2020-02-10T02:30:34Z

    11 votes

    field()和fieldNames()都不适合我。 而且我不得不花一些时间来找到一种迭代密钥的方法。 有两种方法可以完成它。

    一种是将其转换为地图(占用更多空间):

    ObjectMapper mapper = new ObjectMapper();

    Map result = mapper.convertValue(jsonNode, Map.class);

    for (String key : result.keySet())

    {

    if(key.equals(foo))

    {

    //code here

    }

    }

    另一个,通过使用String迭代器:

    Iterator it = jsonNode.getFieldNames();

    while (it.hasNext())

    {

    String key = it.next();

    if (key.equals(foo))

    {

    //code here

    }

    }

    Anna Shekhawat answered 2020-02-10T02:31:22Z

    7 votes

    在这里澄清:

    尽管这将起作用:

    JsonNode rootNode = objectMapper.readTree(file);

    Iterator> fields = rootNode.fields();

    while (fields.hasNext()) {

    Map.Entry entry = fields.next();

    log.info(entry.getKey() + ":" + entry.getValue())

    }

    这不会:

    JsonNode rootNode = objectMapper.readTree(file);

    while (rootNode.fields().hasNext()) {

    Map.Entry entry = rootNode.fields().next();

    log.info(entry.getKey() + ":" + entry.getValue())

    }

    因此,请小心声明fasterxml为变量,并使用该变量。

    确保使用fasterxml库而不是codehaus。

    ChrisGeo answered 2020-02-10T02:32:00Z

    0 votes

    JsonNode root = mapper.readTree(json);

    root.at("/some-node").fields().forEachRemaining(e -> {

    System.out.println(e.getKey()+"---"+ e.getValue());

    });

    一站式杰克逊2+

    nash answered 2020-02-10T02:32:20Z

    展开全文
  • C#获取Json字符串中的某个值

    千次阅读 2021-01-17 16:35:27
    问题描述:json数据格式{"resCode":0,"resMag":"aaa","data":[{"parkName": "B1停车场","freeSpaceNum":100}]}。第一方法:使用 JavaScriptSerializerJavaScriptSerializer Jss = new JavaScriptSerializer();...
  • var json = { a: { b: { c: 1 } }, d: [25, 26] } function dfs(root, path) { console.log(root, path); Object.keys(root).forEach(k => { dfs(root[k], path.concat(k)) }) } dfs(json, [])
  • JSON遍历节点并替换节点值 import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import ...
  • 1.将xml报文转换成Json对象来获取节点值 import xmltodict json = xmltodict.parse(xml) 我们需要遍历json中的CouponInfo节点,但是,当CouponInfo是单个而非多个的时候,用for couponInfo in json['CouponInfo']...
  • 获取json叶子节点的jsonPath

    千次阅读 2019-05-21 15:30:03
    //循环获取节点key,只保留叶子节点 for (int i = 0; i (); i++) { if (jsonPaths.get(i).lastIndexOf("/") > 0) { parentNode.add(jsonPaths.get(i).substring(0, jsonPaths.get(i).lastIndexOf("/"))); } ...
  • 最近需要把一个Json里面的所有键值对给拿出来,也就是把复杂Json的层次结构给去除,只留下叶子节点的键值,方便我们循环输出。这里只是输出了键值对,如有需要请把键值对存成数组。 这里采用递归的方式去遍历打印...
  • 深度优先遍历一个json对象中所有的节点值,打印出路径。 实现代码 const json = { a: { b: { c: 1, d: 2, }, }, e: [3, 4], }; ... // 获取所有的子节点遍历 Object.keys(n).forEac
  • <!DOCTYPE html> <... <head>...meta charset="utf-8">...JS-如何在JSON树形结构中找到子节点的父级路径</title> <script> const data = [{ id: 11, pid: 'a1', text:
  • 以快递100接口为例返回的JSON数据{"message":"ok","nu":"350116805826","ischeck":"0","com":"huitongkuaidi","status":"1","condition":"00","data":[{"time":"2014-02-12 15:21:45","location":"","context":"合肥...
  • 使用WordPress,我已经获取了API信息,json编码了它,将其本地化以供在JS中使用。这里是我的新的JS var与JSON字符串信息:var discographyJson = php_params.discography_setup.replace( /"/...
  • For example: Given this json document:{"store": {"book": [{"category": "reference","author": "Nigel Rees","title": "Sayings of the Century","price": 8.95},{"category": "fiction","author": "Herman Melv...
  • // 组织机构数深度遍历获取某个机构是否在数据中0 export function recursion(data: any, filterData: any) { let hasFound = false,// 表示是否有找到id值 result = null; const filter = (data: any) => { ...
  • 利用Java如何替换JSON字符串中的节点发布时间:2020-11-25 15:00:57来源:亿速云阅读:59作者:Leah利用Java如何替换JSON字符串中的节点?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决...
  • Java用Jackson遍历json所有节点

    千次阅读 2021-03-03 10:51:04
    com.fasterxml.jackson.corejackson-core2.1.4com.fasterxml.jackson.corejackson-databind2.1.4com.fasterxml.jackson.corejackson-annotations2.1.4commons-iocommons-io2.5public static void jsonLeaf(JsonNode ...
  • javascript如何读取Json数据结构节点的值?下面json官方的js,结合ajax来读取解释json结构的数据。<script>//直接声明json数据结构var myJSONObject = {"bindings": [ {"ircEvent": "PRIVMSG", "method": "new...
  • 读取JSON文件,获取对应元素 #include #include #include "rapidjson/document.h" #include "rapidjson/writer.h" #include "rapidjson/stringbuffer.h" using namespace rapidjson; using namespace std; string ...
  • json.net库中的jtoken对象非常有用,您可以访问json对象和数组,而不需要一组复杂的域模型类。当我必须访问复杂对象图的一些独立属性时,我使用它。我不想为了访问几个属性而定义一大堆样板类。当您不知道json如何或...
  • 使用JsonNode来接收和获取里面的值。 例如:一个接口的Response body是这样的 { "code": "0", "msg": "success", "data": [ { "userId": "12", "personId": "66666666666666", "personName": "德玛西亚", ...
  • 所有在反序列化Json字符串时需要一种通用的转换方式,而不是写死的某个类的反序列化,这里介绍的一种思路就是使用dynamic关键字来实现通用反序列化比较反序列化后的对象是否深度相等即比较对象的各个字段是否相等...
  • 前台页面:JavaScript页面(包括数据初始化):initAEType: function () {$.ajax({url: AEActionUrl + '?...ParentType=',dataType: 'json',success: function (jsonstr) {$('#fm_AEType').combotree({data: jsons...
  • java使用fastJson处理复杂Json字符串,直接获取key对应的value值
  • 最近做了一个类似用js实现思维导图的功能,作为思维导图,一定会有树状结构的数据产生,在操作里面的节点时会经常需要查找节点 的父节点及父节点。 对于未知层级的树状数据,用for循环是无法实现的,因为不知道要...
  • Kotlin数据类及json解析

    千次阅读 2020-12-22 15:06:57
    举个例子,Map类含有一些扩展函数的实现,允许它在迭代时使用key和value:for ((key, value) in map) { Log.d("map", "key:$key, value:$value") } —json解析——-《Kotlin for Android Developers》中文...
  • 获取name的值,则需要构造两个JObject来获取,如下: JObject json = JObject.Parse(jsonresult); string name = ((JObject)json["object"])["name"].ToString(); json形如: { "object":{ "name": [ {
  • python循环套用递归进行多层json解析

    千次阅读 2019-09-11 11:25:53
    这个循环递归真是折磨了我两天。。。 上代码解析一个四层json # -*- coding:utf-8 -*- ''' Created on 2019 @author: pt0521 ''' import re import json as js import sys def get_json_nums_of_layers(file_...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 37,504
精华内容 15,001
关键字:

获取json节点并循环

友情链接: 12864chuanhangdisplay.rar